我们正在将PHP站点从Apache移植到NGINX,并在尝试让NGINX识别从站点URL传递到index.php的参数时遇到了一个问题。.htaccess URL参数重写为NGINX
我们在Apache的.htaccess命令如下
RewriteEngine on
RewriteBase/
RewriteRule ^([^/.]+)/([^/.]+)/([^/.]+)[/]?$ /index.php?market=$1&area=$2&id=$3 [L]
该规则允许的index.php明白$市场来自于第一URL参数,$区来源于第二和$ ID来自第三。
所以,www.domain.com/miami/profiles/100提供的index.php以$市场=迈阿密,$面积=曲线并且$ id = 100
我们已经想尽了各种失败的解决方案希望能在网站的NGINX conf文件中达到同样的效果。这里有一些我们已经试过了不起作用:
location /sitename {
root /www/sitename;
try_files $uri /sitename/index.php?market=$args&area=$args&id=$args;
}
location /sitename {
root /www/sitename;
try_files $uri /sitename/index.php/?market=$args?area=$args?id=$args;
}
location /sitename {
rewrite "^/index.php/([a-zA-Z]+)/([a-zA-Z]+)/([a-zA-Z]{3})$"
/index.php?market=$1&area=$2&id=$3 last;
}
任何人能发现我们在做什么错在这里向我们展示的解决方案?
感谢您指出了这一点。我把你修改后的重写,仍然没有得到我期待的行为。 – user2062272 2013-02-15 18:58:30
我写了一个获取URL变量到index.php的新方法。因此,现在我定义从server_URI创建的数组中的$ market,$ area和$ id变量。这里是代码: – user2062272 2013-02-15 19:00:57
$ url_parts = explode('/',$ _ SERVER ['REQUEST_URI']);如果 (isset($ url_parts [ '1'])){ \t \t $市场= $ url_parts [ '1']; } 如果(isset($ url_parts [ '2'])){ \t \t $面积= $ url_parts [ '2']; } 如果(isset($ url_parts [ '3'])){ \t $ ID = $ url_parts [ '3']; \t } – user2062272 2013-02-15 19:01:46