![nginx:将 URL 重定向到无扩展名的页面,无法在主页上使用](https://linux22.com/image/737846/nginx%EF%BC%9A%E5%B0%86%20URL%20%E9%87%8D%E5%AE%9A%E5%90%91%E5%88%B0%E6%97%A0%E6%89%A9%E5%B1%95%E5%90%8D%E7%9A%84%E9%A1%B5%E9%9D%A2%EF%BC%8C%E6%97%A0%E6%B3%95%E5%9C%A8%E4%B8%BB%E9%A1%B5%E4%B8%8A%E4%BD%BF%E7%94%A8.png)
我正在尝试将带有 PHP 扩展的页面自动重定向到非扩展页面版本,例如example.com/page.php
。example.com/page
我已设法使此功能适用于除我的主页和动态页面之外的所有页面。这些页面都返回404
错误页面。
对于主页,如果我尝试访问,example.com
我会得到404
响应,但如果我访问,example.com/index
则主页会加载。
我显然希望主页能够像这样加载example.com
,并且动态页面也能够像这样加载example.com/check/something.com
。
相关代码如下:
server {
index index.php index.html index.htm;
location / {
try_files $uri /$uri /index.php?$args;
sendfile off;
# returns a 404 e.g example.com/check/something.com
rewrite ^/check/(.*)$ /check.php?url=$1&name=&submitBtn=check;
}
# If PHP extension then 301 redirect to semantic URL
location ~ ^(.*)\.php$ {
return 301 $scheme://$server_name$1$is_args$args;
}
location ~ ^/(.*) {
try_files $uri.php @static; # If static, serve it in @static
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root/$1.php;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
include fastcgi_params;
}
location @static {
try_files $uri =404;
}
}
谢谢 :)