내가 Symfony2 내 nginx를 구성 파일에 무슨 일이 일어나고 있는지에 대한 명확한 이해를 얻으려고 함께 Symfony2의 URI에 app.php 제거하는 방법 여기있다 : 한마디로는 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에서 실제로 작동하지만 "root"URI example.com에 액세스하려는 경우 리디렉션 루프가 발생합니다.
try_files에서 $ uri /를 제거하고 거기에 $ uri 및 대체 @symfony 만 남겨두면 모든 디렉토리에 액세스 할 수 없다는 점을 제외하면 모든 것이 올바르게 작동합니다. SF로 처리 될 예정입니다.
나는 아이디어가 없으며 nginx와 다시 쓰기가 실제로 작동하는 방식에 대해 많은 연구를했지만 지금은 나에게 막 다른 길이다. $ uri/try_files에 머무르고 앞에서 루프를 빠져 나갈 수있는 해결책을 찾으면 알려주세요.
감사합니다,하지만이 구성의 문제는 $ URI/위치/{} 블록을하지 않는다는 것입니다, 나는 아직 알 수없는 이름을 가진 일부 사용자 특정 폴더가있을 수 있기 때문에 나는/$ URI를 필요 액세스 할 수 있어야합니다 (예 : 다른 앱을 포함 할 수 있음). 또한 실제로 사용자가 명시 적으로 설정할 수있는 URI에서 app.php를 잘라 내지 않습니다. –