我正在尝试重定向以下两个URL:
https://www.example.com/blog/content/Das.com
https://www.example.com/blog/content/page/2
收件人:
https://www.example.com/blog/content
使用:
RewriteEngine on
RewriteRule (blog/content/Das.com|blog/content/page/2) /blog/content [L,R=301]
但它不起作用。我做错了什么?
您确定要将不同请求的URL重定向到同一目标URL吗?这意味着您将丢失最初请求的URL的信息。因此,您不能再在这两个请求之间存在任何差异。如果您实际上只想内部重写这些URL,以便它们可以由同一控制器处理,那么只需保留下面的R=301
标志。。。
我个人建议执行两项单独的规则。代码的可读性非常重要,即使对于没有编写代码的人来说,也应该能够立即了解代码的作用:
RewriteEngine on
RewriteRule ^/?blog/content/Das.com$ /blog/content [R=301,END]
RewriteRule ^/?blog/content/page/2$ /blog/content [R=301,END]
但如果你更喜欢一条规则,你当然可以把它结合起来:
RewriteEngine on
RewriteRule ^/?blog/content/(?:Das.com|page/)$ /blog/content [R=301,END]
为了实现这一点,显然需要将重写模块加载到http服务器中。您应该更喜欢在实际http服务器的主机配置中实现这样的规则。您可以使用分布式配置文件(".htaccess"(,以防无法控制正常配置,但这会带来性能损失。而且显然也需要先启用。在这种情况下,您需要将该文件放在DOCUMENT_ROOT
的顶部文件夹中。
一般来说,最好从R=302
临时重定向开始,只有在您确定一切正常后,才将其更改为R=301
永久重定向。这样可以防止恼人的缓存问题。