我已经读了两天我能找到的所有东西,但似乎没有任何效果
我有这样的网址
http://www.mysite.com/auction.php?category=23140
并希望制作重写规则,以便它显示为
http://www.mysite.com/auction/category/23140.php
我这样做只是为了建立seo友好网址,但到目前为止没有任何工作。
重写^ / auction.php?category =(。*)$ / auction / category / $ 1 last;
看起来很简单,我真的不知道为什么它不起作用。
我应该将此行放在服务器块还是位置块中?正则表达式错了吗?
非常感谢任何帮助
答案 0 :(得分:3)
首先,请记住nginx中的重写 与查询字符串不匹配,只有uri 。
例如,在此网址:“ /auction.php?category=23140 ”中,uri为 /auction.php ,查询字符串为 category = 23140 强>
所以在你的情况下,正确的规则应该是:
if ( $request_uri ~ "^/auction\.php\?category=[0-9]+(.*)?$" ) {
rewrite "^.*$" /auction/category/$arg_category break;
}
以上只是一个例子,您可以根据自己的情况进行更改。您还可以从nginx手册中找到$request_uri和$arg_PARAMETER的用法。
答案 1 :(得分:0)
你向后做,试试这个。
rewrite ^/auction/([^/]*)/([0-9]*) /auction.php?$1=$2
一条建议,如果这是一个你没有框架的自定义应用程序,你可以找到一个你可以使用的路由模块,它可以帮助你轻松完成所有事情。