Dai*_*ail 6 linux rewrite nginx url-rewriting
我在Ubuntu服务器上使用NGINX.我有这个vhost:
server {
listen 80;
server_name *.example.com;
root /home/nginx/vhosts/example.com/web;
location / {
index index.php;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9001;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
}
Run Code Online (Sandbox Code Playgroud)
我必须添加规则......
如果文件/目录未找到,则使用index.php
我怎么能改变我的服务器{}指令?
谢谢!
Ikk*_*kke 12
您可以使用try_files指令:
try_files $uri $uri/ /index.php
Run Code Online (Sandbox Code Playgroud)
这将首先尝试查找文件和目录,如果这不起作用,它将使用index.php.
另请参阅nginx wiki上的前端控制器部分.
小智 5
ikke是正确的,像这样使用try_files:
location / {
try_files $uri $uri/ /index.php;
}
Run Code Online (Sandbox Code Playgroud)
但是您的PHP fastcgi位置不安全。请参阅本文以了解更多信息。
对于您的设置,您需要具有以下内容:
location ~ \.php$ {
try_files $uri /index.php;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include /etc/nginx/fastcgi_params;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass 127.0.0.1:9001;
}
Run Code Online (Sandbox Code Playgroud)
请注意,fastcgi_param在包含fastcgi_params全局配置之后,您应该设置本地。