Правило перезаписи htaccess принимает символ% в параметре - PullRequest
0 голосов
/ 20 февраля 2012

Я создаю правило перезаписи, которое должно включать параметр, который может содержать символ %, однако, когда я добавляю его в свое правило, оно ломает мой веб-сайт, и каждая страница возвращает ошибку:

RewriteRule ^sale/([a-zA-Z0-9_-%]+)$ browse.php?id=$1

Я хотел, чтобы параметр мог включать символы, цифры от 0 до 9 и специальные символы -, _ и %.

Если я удаляю %, он работает нормально, но, очевидно, я хочу, чтобы он был принят как символ, например, url:

http://www.websitename.com/sale/test%20parameter

Ответы [ 2 ]

2 голосов
/ 20 февраля 2012

Apache переводит кодированный в процентах символ внутри URL перед передачей его в mod_rewrite. Поэтому, если вы хотите принять %20 в своих URL, вам просто нужно добавить пробел внутри вашего RewriteRule. Однако обратите внимание, что пробел также должен разделять выражение регулятора и строку замены в RewriteRule, поэтому в случае пробела вам нужно экранировать его, используя \

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

Вы можете использовать B flag http://httpd.apache.org/docs/2.2/rewrite/flags.html#flag_b

...