Кто-то неправильно связался с некоторыми из моих URL-адресов, что привело к ошибке 404 в Инструментах Google для веб-мастеров.
Вот пример
Связанный URL: http://www.example.com/foo-%E2%80%8Bbar.html
Правильный URL: 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]
Может ли кто-нибудь сообщить мне, что я делаю не так?
Ну, для начала, регулярное выражение
foo-(.*)bar\.html
также будет соответствовать "foo-bar.html", что нехорошо и вызывает цикл перезаписи.
Вместо этого вы хотите:
foo-(.+)bar\.html
И вообще, rewriterule должно быть:
RewriteRule ^/foo-(.+)bar\.html$ /foo-bar.html? [L,R=301]
RewriteEngine on
RewriteRule ^foo-(.*)bar\.html$ /foo-bar.html? [L,R=301]
Я предлагаю проверить журнал перезаписи Apache, обычно расположенный в / var / logs / apache2. Это расскажет вам, каков переписанный результат, и может помочь вам определить, почему это возвращает вам 404.
Вы также можете опубликовать результаты в своем журнале, поскольку это может помочь нам определить проблему.