如何使用 .htaccess 文件重定向和重写我的 URL?

热门:
升级您的服务器配置! 申请 AVA 并使用 立减 15%
使用优惠码:

如果你在 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.html

2. 302 Temporary Redirect

当重定向是临时的时使用此方法。

Redirect 302 /temp-page.html https://yourdomain.com/coming-soon.html

3. 使用 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/123

1. 基本重写规则

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

假设你重新整理了博客,并希望将流量从一篇过时的文章重定向到新位置:

Redirect 301 /old-blog-post https://www.example.com/blog/new-post

这条简单的规则可确保:

  • 搜索引擎将 SEO 权重传递到新 URL

  • 用户不会进入 404 页面

  • 重定向会立即发生,并使用 301 (permanent) 状态码