添加尾部斜杠时 NGINX return 404 错误

NGINX return 404 error when adding a trailing slash

今天,我遇到了 NGINX 的问题。

在我的 NGINX 配置中我有这个:

location ~ / {
    try_files $uri $uri/ /index.php?$query_string;
}

例如,我想使用 Laravel 定义的路由访问 https://my.domain/hello。有用 但现在如果我访问 https://my.domain/hello/ 它 returns 一个 404 NGINX 错误页面。我还指出我使用 Plesk。

您对如何解决这个问题有什么想法吗?

感谢您的宝贵时间 ;)

如果路径不是目录且结束于 /

,则添加 301 重定向
if (!-d $request_filename) {
   rewrite ^/(.*)/$ / permanent;
}

location / {
    try_files $uri $uri/ /index.php?$query_string;
}

如果你检查 nginx 配置模板,你会发现这一行

/usr/local/psa/admin/conf/templates/default/domain/nginxDomainVirtualHost.php

        <?php if ($VAR->domain->physicalHosting->directoryIndex && !$VAR->domain->physicalHosting->proxySettings['nginxProxyMode']): ?>
     location ~ /$ {
         index <?=$VAR->quote($VAR->domain->physicalHosting->directoryIndex)?>;
     }
         <?php endif ?>

您需要重新启用代理模式(它将重新启用 apache,但 nginx 仍将首先接收请求)或 create a custom template 为您的域删除此行

这与你无关,但如果你没有使用 php(例如:nodejs),你也可以禁用 php 支持,这也会去掉这一行