2013-12-08 2 views
1

У меня есть следующее mod_rewrite правила, которые вырежут расширение .html от запросов и заменяет его завершающий/mod_rewrite перекодирование Строки запрос параметров

# Handle requests to pages ending with .html 
RewriteCond %{REQUEST_URI} .*.html$ 
RewriteRule (.*).html$ $1/ [R=301,QSA,L] 

Я обнаружил, что, если мой запрос пары содержат пробел , уже закодированный, переадресация перекодируется. Поэтому, если исходный запрос для «/search-results.html?q=some%20string», который переписывается в «/ search-results /? Q = some% 2520string»

Есть ли еще один параметр, который я могу дать на mod_rewrite, чтобы предотвратить повторное кодирование?

+0

http://httpd.apache.org/docs/current/rewrite/flags.html – Sumurai8

+0

Обратите внимание: если вы хотите совместить точечный литерал, вы должны иметь '\ .' в своем регулярном выражении, а не' .' , Однако это не вызывает проблемы. – Sumurai8

ответ

1

Используйте флаг [NE], чтобы избежать дублирования кодировки.

Смежные вопросы