У меня есть следующее 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, чтобы предотвратить повторное кодирование?
http://httpd.apache.org/docs/current/rewrite/flags.html – Sumurai8
Обратите внимание: если вы хотите совместить точечный литерал, вы должны иметь '\ .' в своем регулярном выражении, а не' .' , Однако это не вызывает проблемы. – Sumurai8