2012-04-05 145 views

回答

2

基本上你的規則是不正確的。原因:您只能使用RewriteRule與REQUEST_URI匹配,但無法在此匹配QUERY字符串。

你的代碼改成這樣做是否正確:

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

非常感謝! – dirk 2012-04-05 16:13:03

+0

如果^ page \ .php /?$是^ page \ .php \?$ – 2012-04-05 16:17:33

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 2012-04-05 16:11:55

相關問題