Вопрос по mod-rewrite, .htaccess, query-string, apache – Как я могу mod_rewrite и сохранить строки запроса?

25

Я хочу mod_rewrite URL на другую страницу, но затем я хочу, чтобы все добавленные строки запросов были сохранены.

RewriteEngine On

#enforce trailing slashes
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !#
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://localhost/siteroot/$1/ [L,R=301]

RewriteRule ^apps/([A-Za-z0-9-_]+)/?$ index.php&app=$1

Так что, если пользователь посещает,apps/app1/index.php?app=app1 Показано. Тем не менее, я хочу иметь возможность сохранять необязательные строки запроса, чтобы посещениеapps/app1/?variable=x возвращается.index.php?app=app1&variable=x

Какое правило / условие mod_rewrite могло бы сделать это?

Ваш Ответ

1   ответ
52

Вам нужно добавить[QSA] флаг ("строка запроса append ")

RewriteRule ^apps/([A-Za-z0-9-_]+)/?$ index.php&app=$1 [L,QSA]

Для страницы 301 перенаправления с[R] флаг, в отличие от внутренних переписывает, как этот, строка запроса автоматически добавляется. Тем не менее, вы должны заставить его[QSA] для внутреннего переписывания.

+1 Согласен с @DanielOakey .. Я пытался что-то взломать с помощью регулярных выражений, и это не сработало .. Karthik T
Спасибо я неЯ не понимаю, что это было так просто. Daniel Oakey
Чтобы уточнить, это 'не о перезаписи против перенаправления.httpd.apache.org/docs/current/rewrite/flags.html#flag_qsa говорит: Когда заменяющий URI содержит строку запроса, поведение RewriteRule по умолчанию - отбрасывать существующую строку запроса и заменять ее вновь сгенерированной. Использование флага [QSA] приводит к объединению строк запроса. Denis Howe

Похожие вопросы