HTACCESS: соответствие RegEx заменяет URL - PullRequest
1 голос
/ 20 мая 2011

Я хочу, чтобы htaccess Redirect 301 делал следующее с помощью регулярного выражения:

http://example.com/folder/abc_123_123.htm

до

http://example.com/abc-123-123.shtml

3 цели нового URL:

  • delete / folder /

  • заменить все _ на -

  • заменить htm на shtml

Ответы [ 2 ]

1 голос
/ 20 мая 2011

Насколько я знаю, ваша точка №2 не может быть реализована без RewriteMap , который требует некоторой надоедливой конфигурации или нескольких правил.

Эта реализация должна быть универсальной и работать для любого количества подчеркиваний, но это дорого, поскольку может вызвать много перенаправлений (на самом деле, этого достаточно, чтобы вызвать ошибки перенаправления в браузерах, если в путях есть тонны подчеркиваний):

RewriteBase /
RewriteRule ^(folder/[^_]*)_(.*\.html?)$ /$1-$2 [L,R=301]
RewriteRule ^folder/(*+)\.html?$ /$1.shtml [L,R=301]

В качестве альтернативы можно перечислить варианты использования по мере необходимости или (лучше, я подозреваю) переписать запрос в сценарий perl или php и выполнить оттуда regexp_replace + redirect 301.

RewriteBase /
RewriteRule ^folder/(*+)\.html?$ /folder/redirect.php [L,QSA]
0 голосов
/ 20 мая 2011
RewriteEngine On
RewriteBase /
RewriteRule ^folder/([a-z]+)_(\d+)_(\d+)\.htm$ http://example.com/$1-$2-$3.shtml [L,R=301]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...