Nginx 将对不存在的子目录和文件的请求重定向到根目录

Nginx 将对不存在的子目录和文件的请求重定向到根目录

我想将所有对不存在的子目录、不存在的文件以及不存在的子目录中的文件的请求重定向回根页面。

Ex. sampledomain.com/jahsdjksf/sfhsafh.php
or sampledomain.com/jahsdjksf/sdfsndf/sfhsafh.php 
or sampledomain.com/sfhsafh.php

全部返回至sampledomain.com

目前我已将以下内容添加到我的规则中

root   /home/nginx/domains/randwebsite.com/public/;
index  index.php;

try_files    $uri $uri/ /index.php;

但问题是,当我尝试任何随机的不存在的子目录时,它都会加载该 url 下的主页,并且它会损坏,因为 css 等正在使用该 url 和不存在的子目录,但只适用于没有添加子目录的不存在的文件

ex. sampledomain.com/sdlfsdlfsf.php

答案1

如果你想强制重定向,可以使用命名位置。以下方法可能对你有用:

root /home/nginx/domains/randwebsite.com/public;
index index.php;

location / {
    try_files $uri $uri/ @redirect;
}
location ~ \.php$ {
    try_files $uri @redirect;
    ...
}
location @redirect {
    return 301 /index.php;
}

这个文件了解更多信息。

相关内容