gpt4 book ai didi

Nginx 重写规则/try_files 不能一起工作

转载 作者:行者123 更新时间:2023-12-05 08:02:05 28 4
gpt4 key购买 nike

我有一个网站需要从 Apache 服务器迁移到 Nginx 服务器。

本站.htaccess文件如下

RewriteEngine on
RewriteRule ^([^/\.]+)/?$ $1.php [L]

这会将 www.example.com/hello 重定向到 www.example.com/hello.php,保留原始链接,但从 url 末尾省略 .php。

我试图在我的 Nginx 服务器 block 中复制它..

location / {
# Check if a file exists, or route it to index.php.
try_files $uri $uri/ /index.php;
}

rewrite ^/([a-z]+)$ /$1.php last;

重写规则有效,将所有链接重定向到 .php 文件,但如果文件不存在,则打破 Nginx try_files 在目录内搜索的规则。

下面的管理示例链接是一个文件夹,里面有一个 index.php 文件。

www.example.com/admin

try_files 应该将其重定向到..

www.example.com/admin/

因为没有名为 admin.php 的文件。相反,我收到“未指定输入文件”消息。

当我删除重写时,try_files 工作正常。但是,如果没有此重写规则,站点的其余部分将无法工作。

有谁知道如何让 try_files 和重写一起工作?

谢谢

最佳答案

我知道这可能没有帮助,但我看了你的用例,我想知道你怎么知道/admin 的请求应该去/admin/而不是/admin.php?

我的意思是您的重写规则清楚地表明,如果您收到对/[a-z]+ 的请求,则应将其重写为/[a-z]+.php

但是你想要一个 try_files 将/admin 推送到/admin/吗?

查看您的 apache 规则:

RewriteRule ^([^/\.]+)/?$ $1.php [L]

我在这里看到您试图限制发送到 x.php 的内容。我在您的 nginx 重写中没有看到任何此类限制。

关于Nginx 重写规则/try_files 不能一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10122640/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com