RewriteRule для того же файла, который на данный момент нацелен - PullRequest
0 голосов
/ 28 сентября 2011

У меня есть файл типа

www.domain.com/test.php

Я хочу написать правило, что когда бы он ни вызывался, я посылаю аргумент в этот файл, но я не хочу, чтобы они отображались в URL I.E. когда вышеуказанный путь находится в браузере, фактическое правило должно быть:

www.domain.com/test.php?state=yes

Каким должно быть правило .htaccess для этого? В настоящее время у меня есть .htaccess

RewriteCond %{HTTP_HOST} ^www\.domain\.com$  [NC]
RewriteRule ^test\.php$ /test.php?view=index [NC,L]

Но это ошибка сервера 500 ???

1 Ответ

1 голос
/ 28 сентября 2011

Я не получаю ошибку 500, что еще у вас есть в вашем .htaccess?

Вот что вы можете использовать:

RewriteEngine on
RewriteBase /
RewriteRule ^test\.php test.php?view=index [NC,L,QSA]

Отсутствует флаг QSA:

Когда заменяющий URI содержит строку запроса, RewriteRule по умолчанию ведет к удалению существующей строки запроса и замене ее новой сгенерированной. Использование флага [QSA] приводит к объединению строк запроса.

Рассмотрим следующее правило:

RewriteRule /pages/(.+) /page.php?page=$1 [QSA]

С флагом [QSA] запрос на /pages/123?one=two будет сопоставлен с /page.php?page=123&one=two. Без флага [QSA] этот же запрос будет сопоставлен с /page.php?page=123, то есть существующая строка запроса будет отброшена.

источник: http://httpd.apache.org/docs/current/rewrite/flags.html#flag_qsa

...