2

两天来我一直在阅读我能找到的所有内容,但似乎没有任何效果

我有一个这样的网址

http://www.mysite.com/auction.php?category=23140

并且想要制定一个重写规则,所以它看起来像那样

http://www.mysite.com/auction/category/23140.php

我这样做只是为了建立对 seo 友好的 url,但到目前为止没有任何效果。

最后重写 ^/auction.php?category=(.*)$ /auction/category/$1;

它看起来很简单,我真的不知道为什么它不起作用。

我应该把这条线放在服务器块还是位置块中?正则表达式错了吗?

任何帮助将不胜感激

4

2 回答 2

3

首先,请记住在 nginx中重写不匹配查询字符串,只匹配 uri

例如,在这个 url 中:“ /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的用法。

于 2013-07-19T07:05:05.597 回答
0

你倒着做,试试这个。

rewrite ^/auction/([^/]*)/([0-9]*) /auction.php?$1=$2

一条建议,如果这是您编写的没有框架的自定义应用程序,您可以找到一个可以使用的路由模块,它可以帮助您轻松完成所有事情。

于 2013-07-18T15:08:28.780 回答