добавить косую черту на 404 URL, чтобы его можно было перенаправить - PullRequest
2 голосов
/ 18 февраля 2012

Ситуация: перенес старый сайт WordPress на новый домен; та же структура постоянных ссылок, 301 $ 1

Незадолго до переезда метки были очищены; уменьшено с более чем 2000 тегов до дюжины или около того тегов; Несмотря на то, что теги были объединены на месте, очевидно, началось много 404-х годов, так как многие из этих старых тегов использовались на сайте в течение многих лет и широко индексируются по всему Интернету.

  • т.е. (/ tag / frank-sinatra / или / tag / tony-bennett / объединены и перенаправлены в / tag / singers /)

Я перенаправлял 404, поскольку они происходят через комбинацию 404 перенаправленного плагина http://wordpress.org/extend/plugins/404-redirected/ (регистрирует и позволяет создавать перенаправления), данные Инструментов Google для веб-мастеров (сообщает об ошибках 404 / сканирования ...), неработающая ссылка Проверка http://wordpress.org/extend/plugins/broken-link-checker/ и добавление перенаправлений и mod_rewrites в мой htaccess, поскольку каждое решение кажется наиболее экономичным.

Моя структура постоянных ссылок / канонических URL (/% postname% /) использует косую черту, т.е. / post-or-page-name / или / tag / tag-name / или / category / category-name /

Тем не менее, вот проблема, с которой я столкнулся, которую я не смог решить самостоятельно с помощью регулярного выражения перенаправления / mod_rewrite:

Wordpress автоматически перенаправляет страницы, записи, теги, категории, в которых отсутствует конечная косая черта, и я создал значительное количество перенаправлений НО от старых тегов к новым тегам, но в последнее время я столкнулся с огромным количеством 404 запросов старых URL-адресов тегов. в которых отсутствует косая черта, большинство из которых я уже исправил как URL с косой чертой. т.е.

  • / tag / frank-sinatra / 301 -> / tag / singers / = 200 Success
  • / tag / frank-sinatra = 404 Не найдено

Они проходят 404, прежде чем косая черта может быть принудительно переведена в конец URL, чтобы их можно было перенаправить

Есть ли решение для этого, кроме создания отдельных 301-х для каждого старого URL-адреса тега, в котором отсутствует косая черта?

Я должен верить, что это должно быть довольно распространенной проблемой, но умное решение работы до сих пор ускользало от меня!

Спасибо тем, кто более осведомлен, чем я, и достаточно щедр, чтобы поделиться решением:)

Ответы [ 2 ]

0 голосов
/ 05 июня 2019

Другой способ сделать это - использовать? в ваших индивидуальных перенаправлениях, чтобы сделать косую черту необязательным. RewriteRule ^ / tag / frank-sinatra /? $ / Tag / singers /

0 голосов
/ 19 февраля 2012

Если все ваши URL-адреса заканчиваются косой чертой, то одним из способов решения этой проблемы является перенаправление тех, у которых их нет. Это приведет к 2 301, но это лучше, чем 404.

Для этого добавьте следующее в файл .htaccess в корневом каталоге вашего сайта. Убедитесь, что эти правила отображаются перед другими существующими правилами.

RewriteEngine on
RewriteBase /

#if not an existing file
RewriteCond %{REQUEST_FILENAME} !-f
#redirect urls without a trailing slash 
RewriteRule ^(.*[^/])$ $1/ [L,R=301] 

Если все URL-адреса, в которых отсутствует косая черта, являются тегами URL, измените последнее правило на

RewriteRule ^(tag/.*[^/])$ $1/ [L,R=301] 
...