我试图将我的应用程序从Apache迁移到Nginx。在第一个我有mod_rewrite模块,自动将我的应用程序重定向到index.php页面,如下所示:
http://127.0.0.1/fwsibe/acesso <- URL displayed
http://127.0.0.1/fwsibe/index.php/acesso <- url accessed
所以,我在我的位置使用带有别名的try_files来自动重定向页面,一切正常,但我需要为每个应用设置一个唯一的位置,使用&#34这个词; SIBE&#34;在RegEx上捕获所有网站。
每个应用的一个位置有效:
location /fwsibe/ {
alias /var/www/fwsibe/;
try_files $uri $uri/ /fwsibe/index.php;
}
location /sibe/ {
alias /var/www/sibe/;
try_files $uri $uri/ /sibe/index.php;
}
location /portalsibe/ {
alias /var/www/portalsibe/;
try_files $uri $uri/ /portalsibe/index.php;
}
location /sibemovel/ {
alias /var/www/sibemovel/;
try_files $uri $uri/ /sibemovel/index.php;
}
但当我尝试使用RegEx的独特位置时,所有&#34; sibe&#34;应用程序我有#34;内部重写或内部重定向周期&#34;错误。
location ~ /([a-z]*sibe[a-z]*)/ {
set $subdomain $1;
alias /var/www/$subdomain/;
try_files $uri $uri/ /$subdomain/index.php;
}
答案 0 :(得分:2)
这与try_files
的工作方式有关 - http://nginx.org/r/try_files - 最后一个参数只是指向指定网址的内部重定向:
如果找不到任何文件,则会进行内部重定向到最后一个参数中指定的uri。
据推测,您希望您的try_files涉及.php
处理程序,但在后续location
搜索中发生的事情是您最终处于与您开始的状态相同的状态。
根据http://nginx.org/r/location,位置指令的顺序很重要 - 匹配的第一个正则表达式胜出:
然后按照它们在配置文件中的出现顺序检查正则表达式。正则表达式的搜索在第一个匹配时终止,并使用相应的配置。
因此,您希望将.php
放在基于站点的处理程序之前。