Назад | Перейти на главную страницу

mod_ReWrite, чтобы удалить часть URL

Кто-то неправильно связался с некоторыми из моих 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.

Вы также можете опубликовать результаты в своем журнале, поскольку это может помочь нам определить проблему.