Правила Apache mod_rewrite .htaccess не совпадают - экранированные символы - PullRequest
1 голос
/ 21 марта 2012

Я пытаюсь сделать несколько относительно простых правил .htaccess, чтобы 301 перенаправлял некоторые URL.Правила не совпадают.Вот что у меня есть:

RewriteEngine On

RewriteBase /

# This works fine
RewriteCond %{QUERY_STRING}  ^id=2$ [NC]
RewriteRule ^products\.php$ /? [R=301,NE,NC,L]

# This doesn't match at all
RewriteRule ^products/-Smart-Smoker-\'Storm\'-White-Manual-Electronic-Cigarette-\(510\)\.html http://www.smartsmoker.co.uk/products/-Smart-Smoker-Storm-White-Manual-Electronic-Cigarette-%28510%29.html [NC,R=301]

# Neither does this
RewriteRule ^products/Christmas-Cracker-%252d-FREE-Shipping\.html$ http://www.smartsmoker.co.uk/categories/Electronic-Cigarette-Kits/Breeze-Mini-Electronic-Cigarette/ [L,R=301]

1 Ответ

0 голосов
/ 21 марта 2012

Лучшая ставка при переписывании драмы - разбить ее на самое короткое действующее совпадение, а затем расширить его, отметив, что приведенные выше условия могут повлиять на то, что вы хотите на самом деле проверить.Сказав это, я сам не вижу никаких проблем, используя приведенный ниже минимальный пример:

RewriteEngine on
RewriteBase /
RewriteRule ^products/-Smart-Smoker-\'Storm\'-White-Manual-Electronic-Cigarette-\(510\)\.html$ /test.html [L]

Кроме того, URL-адреса, на которые вы перенаправляете, не обязательно должны быть закодированы.

...