如何使用 .htaccess 文件重定向和重写我的 URL?
如果你在 Apache server 上运行网站,.htaccess 文件是你手中最强大的工具之一。它允许你控制 URL 的行为——从重定向到干净的 URL 重写——而无需更改实际的 server 配置。
在本文中,我们将通过清晰的示例和说明,介绍使用 .htaccess 进行 URL 重定向 和 重写 的基础知识。
什么是 .htaccess 文件?
.htaccess 是 Hypertext Access 的缩写。它是 Apache-based web servers 上使用的配置文件,可让你在目录级别更改 server 行为。
你可以:
将流量从一个 URL 重定向到另一个 URL
创建干净的 URLs(例如,/about 而不是 /about.php)
限制对某些页面的访问
启用 HTTPS
以及更多功能
重定向 URLs
1. 301 Permanent Redirect
当页面已永久移动到新 URL 时使用此方法。
Redirect 301 /old-page.html https://yourdomain.com/new-page.html2. 302 Temporary Redirect
当重定向是临时的时使用此方法。
Redirect 302 /temp-page.html https://yourdomain.com/coming-soon.html3. 使用 mod_rewrite 进行重定向
你也可以使用 RewriteRule 进行重定向:
RewriteEngine On
RewriteRule ^old-page$ https://yourdomain.com/new-page [R=301,L]重写 URLs(干净 URLs)
URL 重写用于让 URLs 更加用户友好并且更利于 SEO。例如,不再使用:
https://example.com/product.php?id=123你可以使用:
https://example.com/product/1231. 基本重写规则
RewriteEngine On
RewriteRule ^product/([0-9]+)$ product.php?id=$1 [L]这告诉 Apache:
当有人访问 /product/123 时
在内部将其重写为 product.php?id=123
2. 移除 .php 扩展名
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^([^.]+)$ $1.php [L]这允许用户访问 example.com/about,而不是 example.com/about.php。
最佳实践
在进行更改之前,务必备份你的 .htaccess 文件。
一旦找到匹配项,使用 [L] 停止后续规则继续处理。
使用 httpstatus.io 等工具测试你的重定向。
不要在同一个 block 中过多混用 Redirect 和 RewriteRule——为保持一致性,优先使用 RewriteRule。
结论
.htaccess 文件是一个强大的配置工具,可让你对基于 Apache 的网站进行细粒度控制——通常无需触碰核心 server 文件。无论你是想重定向过时页面、强制使用 HTTPS、通过干净 URLs 提升 SEO,还是限制对敏感区域的访问,.htaccess 都能通过几行代码实现这一切。
即使只掌握少量 .htaccess 指令,也能显著提升你的网站性能、安全性和可用性。它让你能够快速响应网站结构变化,防止失效链接,并为访客保持一致的体验。
实用示例:将旧 URLs 重定向到新 URLs
假设你重新整理了博客,并希望将流量从一篇过时的文章重定向到新位置:
这条简单的规则可确保:
搜索引擎将 SEO 权重传递到新 URL
用户不会进入 404 页面
重定向会立即发生,并使用 301 (permanent) 状态码


