Заменить? в запросе с RewriteRule - PullRequest
0 голосов
/ 27 августа 2009

site.com / ссылка? Р = 2

дай $ _GET ['p'] == 2, хотя я уже сделал

site.com / ссылка

переписать на

site.com / index.php? Страница = ссылка

Итак, я пытаюсь заменить site.com/link?p=2. с site.com/link&p=2

RewriteEngine on

RewriteRule (.*)\?(.*) $1\&$2

RewriteCond %{REQUEST_URI} !\....$
RewriteRule ^(.*)$ /index.php?p=$1

Это не работает!

1 Ответ

3 голосов
/ 27 августа 2009

RewriteRule не может видеть строки запроса (? и что-либо после него) с левой стороны; он соответствует только части пути URL.

Но хорошая новость в том, что все, что вам, вероятно, нужно сделать, это:

RewriteEngine on

RewriteCond %{REQUEST_URI} !\....$
RewriteRule ^(.*)$ /index.php?p=$1 [QSA]

Опция QSA, Query String Add, указывает вашему RewriteRule добавить в строку запроса вместо ее замены (поведение по умолчанию, которое, несомненно, вызвало всю проблему).

...