我们正在将一个 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;
}
任何人都可以在这里发现我们做错了什么并向我们展示解决方案吗?