.htaccess 301 Перенаправляет, используя RedirecMatch или RewriteRule - PullRequest
0 голосов
/ 27 января 2011

Я пытаюсь создать 301 редирект с использованием .htaccess, чтобы исправить некоторые ошибки Crawler, с которыми сталкивается Google. Google использует старые версии некоторых из моих URL-адресов, что приводит к возникновению ошибок, когда паук пытается получить доступ к устаревшим путям. Эти устаревшие URL содержат пробелы, и их было много, и все они появлялись в разных местах в строке URL. Например, URL мог бы выглядеть так:

http://www.example.com/car-kits-halogen-aircon-oil/773 CAR 773-halogen-aircon-oil

Эти URL-адреса излишне длинные, тем более что в конечном итоге все они отображают идентичный контент. Теперь они сокращены до чего-то вроде этого:

http://www.example.com/773-halogen-aircon-oil

Существует буквально более 1000 из них, хотя имеется только 6 перестановок конца URL, поэтому я подумал, что мог бы использовать RedirectMatch или RewriteRule, чтобы легко сопоставить, существует ли одна из этих 6 перестановок, и перенаправить на соответствующий новый URL. Я пробовал следующее:

RedirectMatch .*/773[\s]?(%20)?CAR[\s]?(%20)?773-halogen-aircon-oil$ http://www.example.com/773-halogen-aircon-oil

а также:

RewriteEngine On
RewriteBase /
RewriteRule .*/773[\s]?(%20)?CAR[\s]?(%20)?773-halogen-aircon-oil$ http://www.example.com/773-halogen-aircon-oil [R=301,L]

Это не работает. Я пробовал много разных опций, в том числе экранирование пробелов символом \ вместо класса символов regex, изменение начала регулярного выражения на ^. * /? 773 и многие другие, но ничего не работает.

Я использовал функцию тестирования регулярных выражений в http://www.regular -expressions.info / javascriptexample.html , и он сообщает, что мое регулярное выражение является действительным, и генерирует совпадение с URL-адресами, которые я ожидаю, но .htaccess не перенаправляет, как я ожидаю.

Я могу использовать обычный Redirect следующим образом:

Redirect 301 "/car-kits-halogen-aircon-oil/773 CAR 773-halogen-aircon-oil" http://www.example.com/773-halogen-aircon-oil

Это работает, но это проблематично, потому что оно соответствует только при наличии car-kits-halogen-aircon-oil, и, вероятно, существует 200 перестановок этого URI-сегмента, что сделало бы ручной ввод каждой возможной перестановки огромным предприятием .

Есть предложения? Возможно ли то, что я пытаюсь сделать?

1 Ответ

0 голосов
/ 27 января 2011

Правило, которое вы пробуете, кажется немного сложным, и было бы лучше иметь больше примеров.

RewriteEngine on
RewriteRule ^.*/773%20CAR%20(.*)$ http://www.example.com/$1 [R=301,L]

Следует выполнить эту работу.

...