2

我已经安装了一个 xampp 来运行我的 wordpress 应用程序,现在我需要配置 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,但其他人不会。

4

1 回答 1

4

如果您打算/aaa/只重写并且不想重写,/aaa/?p=12即任何带有查询字符串的 URI,那么将您的规则替换为:

RewriteCond %{QUERY_STRING} ^$
RewriteRule /([\w-]+)/?$ /test.php?app=$1 [L]

RewriteCond此处的行将确保仅在查询字符串为空时应用 RewriteRule。也是\w简写,[A-Za-z0-9_]因此我在答案中替换了它。

于 2013-08-14T08:18:32.477 回答