【发布时间】:2014-11-09 08:15:10
【问题描述】:
我试图清楚地了解我的 Symfony2 的 nginx 配置文件发生了什么,这里是:
server {
listen 80;
autoindex on;
server_name example.com;
root /var/www/example.com/web;
rewrite ^/app\.php/?(.*)$ /$1 permanent;
location / {
index app.php;
try_files $uri $uri/ @symfony;
}
location @symfony {
rewrite ^(.*)$ /app.php/$1 last;
}
location ~ ^/app\.php(/|$) {
include fastcgi_params;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}
}
简而言之,我试图在用户可以设置的每个可能的 URI 中删除 app.php,例如example.com/app.php/demo 或只是 example.com/app.php。
此配置实际上适用于上述 URI,但在尝试访问“根”URI example.com 时会导致重定向循环。
如果我从 try_files 中删除 $uri/ 并只留下 $uri 和一个备用 @symfony ,那么一切正常,除了我无法访问任何目录,因为它们将由 SF 处理。
我没有想法,对 nginx 和重写如何实际工作进行了大量研究,但就目前而言,这对我来说是一条死胡同。如果你能找到一个解决方案,在 try_files 中保留 $uri/ 并摆脱前面的循环,请告诉我。
【问题讨论】: