mod_ReWrite 删除 URL 的一部分

mod_ReWrite 删除 URL 的一部分

有人错误地链接到我的某些 URL,导致 Google 网站管理员工具出现 404 错误。

以下是一个例子

链接网址:http://www.example.com/foo-%E2%80%8Bbar.html

正确的网址:http://www.example.com/foor-bar.html

我希望将此类错误链接的任何实例 301 重定向到正确的 URL。我尝试了以下操作,但它在整个站点上生成了 404 错误。

Options +FollowSymLinks
RewriteEngine on    
RewriteRule ^foo-(.*)bar\.html$ http://www.example.com/foo-bar\.html? [L,R=301]

谁能让我知道我做错了什么?

答案1

首先,正则表达式

foo-(.*)bar\.html

也会匹配“foo-bar.html”,这不好并会导致重写循环。

你想要的是这个:

foo-(.+)bar\.html

一般来说,重写规则应该是:

RewriteRule ^/foo-(.+)bar\.html$ /foo-bar.html? [L,R=301]

答案2

我的建议是检查 Apache Rewrite 日志,通常位于 /var/logs/apache2。这将告诉您重写的结果是什么,并可能帮助您确定为什么会返回 404。

您也可以在日志中发布结果,因为这可能有助于我们确定问题。

答案3

RewriteEngine on
RewriteRule ^foo-(.*)bar\.html$ /foo-bar.html? [L,R=301]

相关内容