我有以下行:
RewriteRule ^page.php?var1=([0-9]+)&var2=(.*)&var3=(.*)$ index.php?module=page&var1=$1
当我使用此 url 访问目录时:page.php?var1=24&var2=346adf&var3=asdf
它不执行正则表达式。有人有线索吗?
我有以下行:
RewriteRule ^page.php?var1=([0-9]+)&var2=(.*)&var3=(.*)$ index.php?module=page&var1=$1
当我使用此 url 访问目录时:page.php?var1=24&var2=346adf&var3=asdf
它不执行正则表达式。有人有线索吗?
基本上你的规则是不正确的。原因:您只能使用 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]
我注意到的第一件事是?应该可以逃脱。
除了缺少转义之外,查询字符串(后面的东西?
)不是RewriteRule
匹配的一部分。RewriteCond
如果要匹配查询字符串,则必须使用附加项。例如:
RewriteCond %{QUERY_STRING} ^foo=([^&]+)&bar$
RewriteRule ^page\.php$ otherpage.php?x=%1 [QSA]
我不会推荐这个。您最好在脚本中解析查询字符串。