Правило регулярного выражения для соответствия% входа в URL для переписывания мод Apache - PullRequest
0 голосов
/ 08 ноября 2011

Здравствуйте, мое правило перезаписи иногда не выполняется, потому что в моих URL есть знаки%.

Например, этот URL:

http://www.chillisource.co.uk/product/Grocery/Dr.%20Burnoriums%20Psycho%20Juice/1/B005MSE5KG/Psycho_Juice_70%_Ghost_Pepper

Это мое правило перезаписи:

RewriteRule ^product/([a-zA-Z]+)/([\sa-zA-Z0-9\-\+\.]+)/([0-9]+)/([A-Z0-9]+)/([a-zA-Z0-9]+) /product?&cat=$1&q=$2&page=$3&prod=$4&prodName=$5

Как изменить 5-е правило ([a-zA-Z0-9] +), чтобы оно не сбивалось при наличии% в названии продукта?

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 08 ноября 2011

Возможно, это не %20, а пространство. То есть URL передается для перезаписи URL-адреса рекламодателя. Если нет, то просто добавьте знак процента в диапазон. (если да - пробел).

0 голосов
/ 08 ноября 2011

---- Забудьте эту часть, я неправильно понял вопрос ----

Из того, что я получаю из документации mod_rewrite (http://httpd.apache.org/docs/current/mod/mod_rewrite.html), вам не нужно иметь дело с шестнадцатеричными символами)(Я предполагаю, что из следующего утверждения:

THE_REQUEST Полная строка HTTP-запроса, отправляемая браузером на сервер (например, «GET /index.html HTTP / 1.1»). Это не включаетлюбые дополнительные заголовки, отправленные браузером. Это значение не было экранировано (декодировано), в отличие от большинства других переменных ниже .

Фактически, использование mod_rewrite было бы практически невозможно, так как выпришлось бы иметь дело с этим ВЕЗДЕ , например, вы всегда можете написать% 41 вместо 'A'.

--- Но следующее по-прежнему верно ---

Но ваше правило перезаписи не может работать, по крайней мере, с URL-адресом запроса, который вы разместили: Последняя часть регулярного выражения "([a-zA-Z0-9] +)" равна FAR слишком строго. В этом случае происходит сбой по следующим причинам:

  • В нем отсутствует обработка знака процента, как в "70%"
  • Вы забыли включить подчеркивание "_"

Попробуйте добавить хотя бы эти два символа ("[a-zA-Z0-9% _] + ") и должно работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...