.htaccess rewriterule сохраняет параметры

#php #apache #.htaccess #mod-rewrite #get

#php #apache #.htaccess #мод-перезапись #получить

Вопрос:

В настоящее время у меня есть эта строка в моем файле .htaccess:

 RewriteRule ^(20dd)/([A-Za-z0-9-] )/$ /test/?type=postamp;year=$1amp;title=$2 [L]
 

Это позволяет использовать URL-адрес, подобный этому:

 /test/?type=postamp;year=2014amp;title=hello
 

для доступа следующим образом:

 /test/2014/hello/
 

Однако иногда у меня есть даже другая переменная GET для перезаписанного URL:

 /test/2014/hello/?page=2
 

Однако переменная get page не считывается файлом PHP на странице. Итак, другими словами, как я могу изменить свой файл .htaccess, чтобы другие переменные get (добавленные в переписанный URL) могли использоваться и считываться файлом PHP?

Ответ №1:

Вам нужно добавить флаг QSA в ваше правило перезаписи, чтобы скобки выглядели так:

 [L,QSA]
 

Это говорит apache добавить любую существующую строку запроса к новой строке запроса в цели (mode= allBrands).

больше информации там: https://cwiki.apache.org/confluence/display/HTTPD/RewriteFlags QSA

Комментарии:

1. Неработающая ссылка: cwiki.apache.org/confluence/display/HTTPD/RewriteFlags QSA