我已经安装了一个xampp来运行我的wordpress应用程序,现在我需要configura apache来重写url请求,我已经在httpd.conf中添加了一个部分配置,这里是代码:
RewriteEngine on
<VirtualHost _default_:80>
RewriteCond %{REQUEST_URI} ^/([a-z_-]+)/$
RewriteRule /([a-z0-9_-]+)/$ /test.php?app=$1
</VirtualHost>
当它起作用的结果如下
http://localhost/aaa/ ---> http://localhost/test.php?app=aaa ,
是的,这就是我想要的。
但是现在我发现当http:// localhost / aaa /?p = 12这样的请求时,它也被重写了
http: //localhost/aaa/?p=12 ---> http://localhost/test.php?app=aaa
这意味着$
正则表达式不起作用,我很困惑。
我想要的是"/"
的请求结束时http: //localhost/xxx/
将其重写为//localhost/test.php?app=xxx
,但其他人则不会。{/ p>
答案 0 :(得分:4)
如果您打算仅重写/aaa/
并且不想重写/aaa/?p=12
,即任何带有查询字符串的URI,请将此规则替换为:
RewriteCond %{QUERY_STRING} ^$
RewriteRule /([\w-]+)/?$ /test.php?app=$1 [L]
此处 RewriteCond
行将确保仅在查询字符串为空时应用RewriteRule。
另外\w
是[A-Za-z0-9_]
的简写,因此我在答案中替换了它。