Подтвердить что ты не робот

Как я могу mod_rewrite и сохранить строки запроса?

Я хочу, чтобы 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?

4b9b3361

Ответ 1

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

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

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