Nginx 如何将所有请求重定向到index.php,即使url中有.php
我有这个nginx vhost配置:Nginx 如何将所有请求重定向到index.php,即使url中有.php,nginx,Nginx,我有这个nginx vhost配置: server { listen 8081; server_name blocked_server; root /home/gian/blocked_server; access_log off; error_log off; index index.php index.html index.htm index.nginx-debian.html;
server {
listen 8081;
server_name blocked_server;
root /home/gian/blocked_server;
access_log off;
error_log off;
index index.php index.html index.htm index.nginx-debian.html;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
location ~ / {
try_files $uri $uri /index.php;
}
}
它将所有url重定向到index.php,除非url以.php扩展名结尾
例如,这项工作:
但这会返回404,并且不会重定向到index.php
如何将不存在的扩展名为.php的url重定向到index.php?我已经解决了这个问题。 首先,您应该注释掉这一行,或者从
snippets/fastcgi php.conf
文件中删除这一行
try_files $fastcgi_script_name =404;
然后在virtualhost配置中放入try_files$uri$uri/index.php在include snippets/fastcgi-php.conf之前的code>代码>在位置~\.php$
块上
location~\.php$
块应如下所示:
location ~ \.php$ {
try_files $uri $uri /index.php;
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
这应该可以做到。尝试添加Try\u文件$uri/index.php
到您的location~\.php$
块。我尝试将其添加到location~\.php$
块,但由于此错误,我无法重新加载nginx:nginx:[emerg],/etc/nginx/snippets/fastcgi php.conf:5中的“try\u files”指令重复,请检查snippets/fastcgi php.conf
文件的内容。您可以更改其中的try\u files
语句,也可以将文件内容粘贴到location
块中,以便在其中进行编辑。