【发布时间】:2013-08-16 00:34:55
【问题描述】:
我已经安装了一个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,而其他的则不会。
【问题讨论】:
-
我认为它正在工作。
%{REQUEST_URI}不包括查询字符串(?之后的部分) - 请参阅 here -
这是预期和记录的行为。该查询不是重写规则正则表达式检查的一部分,仅适用于(rewritten) request URL(/file)-path。因此,美元符号在您的示例中确实可以正常工作。您现在可能有一个不同的问题,所以请先阅读手册并尝试找到合适的词来提问。
-
我刚刚看到了关于mod_rewrite的官方文档,现在我知道我的问题有点傻。但是感谢您的耐心回答。 @hakre
标签: apache rewrite query-string httpd.conf