2012-04-05 2 views

ответ

2

В основном ваше правило неверно. Причина. Вы можете сопоставлять только REQUEST_URI, используя RewriteRule, но не можете сопоставить QUERY String.

Измените свой код, чтобы это сделать правильно:

RewriteCond %{QUERY_STRING} ^var1=([0-9]+)&var2=[^&]*&var3=.*$ [NC] 
RewriteRule ^page\.php/?$ index.php?module=page&var1=%1 [L,NC,QSA] 
+0

спасибо! – dirk

+0

Должен^page \ .php /? $ Be^page \ .php \? $ –

1

Первое, что я замечаю, это то, что? вероятно, следует избегать.

1

Кроме отсутствующих побегов, строка запроса (материал после ?) не является частью RewriteRule соответствия. Вы должны использовать дополнительный RewriteCond, если вы хотите совпадать с строкой запроса. Например:

RewriteCond %{QUERY_STRING} ^foo=([^&]+)&bar$ 
RewriteRule ^page\.php$ otherpage.php?x=%1 [QSA] 

Я бы не рекомендовал этот помысел. Вам лучше разобрать строку запроса в ваших сценариях.

+0

См. Также http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritecond – Qtax

Смежные вопросы