我在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;
第二个不起作用,只有参数1可以工作,但实际上得到'付费'和页码添加,例如
http://example.com/seccion/sports/pag/4
%slug
获取:sportspag4
任何线索我做错了什么?
答案 0 :(得分:0)
您的第二个重写规则中有一个额外的美元符号,该符号与行尾相匹配并终止匹配。此外,您的第一个重写规则目前正在匹配所有内容,它应该在第二个规则之后或在匹配中更具限制性。试试这个:
rewrite ^/seccion/([^/]+)/?$ /index.php?tipo=seccion&slug=$1 last;
rewrite ^/seccion/([^/]+)/pag/([0-9]+)$ /index.php?tipo=seccion&slug=$1&pag=$2 last;
答案 1 :(得分:0)
请尝试此配置(您的第二条规则应该是第一条,如示例所示):
rewrite ^/seccion/([^/]+)/pag/([0-9]+)$ /index.php?tipo=seccion&slug=$1&pag=$2 last;
rewrite ^/seccion/(.*)$ /index.php?tipo=seccion&slug=$1 last;