Преобразовать все параметры get в один

#apache #.htaccess

#apache #.htaccess

Вопрос:

У меня есть файл .htaccess с кодом:

 RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) ?p=$1  [L] 
  

но я хочу, чтобы он преобразовывал не только строку URI в параметр get p, но и все другие параметры get в p, другими словами:
domain.com/somewhere/somepage.html?foo=2 —->
domain.com/?p=urlencoded (где-нибудь/somepage.html?foo=2)
Как я могу это сделать?

Ответ №1:

Используйте следующий код в файле .htaccess

 Options  FollowSymlinks -MultiViews
RewriteEngine on

RewriteCond %{QUERY_STRING} !^p= [NC]
RewriteRule . /?p=%{REQUEST_URI}?%{QUERY_STRING} [L]
  

Поскольку NE флаг здесь не указан, движок mod_rewrite будет кодировать ваш исходный URI перед внутренним перенаправлением.