有人错误地链接到我的某些 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]