nginx 重写:[emerg] 未知“0”变量

nginx 重写:[emerg] 未知“0”变量

1.)Apache 规则:

RewriteRule ^(.*)/(.*).htm$ /inner.php?Categories=$0&Title=$1 [L,QSA]

2.)转换为nginx后:

rewrite ^/(.*)/(.*).htm$ /inner.php?Categories=$0&Title=$1 break;

问题:当用户访问此页面时http://example.com/category.htm并尝试点击页面内部意味着它应该重定向到 http://example.com/category/innerpagetitle.htm/

在nginx中如何实现?

答案1

在 nginx 中变量从开始返回,$1因此这应该可以工作:

rewrite ^/(.*)/(.*).htm$ /inner.php?Categories=$1&Title=$2 break;

答案2

我更喜欢使用块来实现这些location

location ~ ^/(.+)/(.+)\.htm$ {
    try_files $uri $uri/ /inner.php?Categories=$1&Title=$2;
}

.*我还将(0 个匹配或更多)更改为.+(1 个匹配或更多),以避免 PHP 脚本可能出现未定义的行为。

相关内容