【发布时间】:2013-02-12 22:59:56
【问题描述】:
我们正在将一个 PHP 站点从 Apache 迁移到 NGINX,但在尝试让 NGINX 识别从站点 URL 传递到 index.php 的参数时遇到了问题。
我们在 Apache 上的 .htaccess 命令如下所示
RewriteEngine on
RewriteBase /
RewriteRule ^([^/.]+)/([^/.]+)/([^/.]+)[/]?$ /index.php?market=$1&area=$2&id=$3 [L]
这个规则让 index.php 明白 $market 来自第一个 URL 参数,$area 来自第二个,$id 来自第三个。
因此,www.domain.com/miami/profiles/100 为 index.php 提供了 $market = miami、$area = profiles 和 $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;
}
谁能发现我们在这里做错了什么并向我们展示解决方案?
【问题讨论】:
标签: php apache .htaccess nginx