0

我在apache中有这个规则:

RewriteRule ^seccion/([^/\.]+)/?$ index.php?tipo=seccion&slug=$1 [L]
RewriteRule ^seccion/([^/\.]+)/pag/([0-9]+)$ index.php?tipo=seccion&slug=$1&page=$2 [QSA,L]

两者都很完美,但是在 nginx 中我有这个 2

rewrite ^/seccion/([^\?]+)$ /index.php?tipo=seccion&slug=$1 last;
rewrite ^/seccion/([^\?]+)$/pag/([0-9]+)$ /index.php?tipo=seccion&slug=$1&pag=$2 last;

第二个不起作用,只有参数一起作用,但实际上得到了“支付”和添加的页码,例如

http://example.com/seccion/sports/pag/4

得到%slugsportspag4

任何线索我做错了什么?

4

2 回答 2

0

您的第二个重写规则中有一个额外的美元符号匹配行尾并终止匹配。此外,您的第一个重写规则当前正在匹配所有内容,它应该在第二个规则之后或者在其匹配中更具限制性。试试这个:

rewrite ^/seccion/([^/]+)/?$ /index.php?tipo=seccion&slug=$1 last;
rewrite ^/seccion/([^/]+)/pag/([0-9]+)$ /index.php?tipo=seccion&slug=$1&pag=$2 last;
于 2012-06-28T21:52:34.530 回答
0

请尝试此配置(您的第二条规则应该是第一条,例如示例):

rewrite ^/seccion/([^/]+)/pag/([0-9]+)$ /index.php?tipo=seccion&slug=$1&pag=$2 last;

rewrite ^/seccion/(.*)$ /index.php?tipo=seccion&slug=$1 last; 
于 2012-06-29T07:53:49.837 回答