gpt4 book ai didi

php - Nginx 别名和子文件夹的 try_files 不起作用

转载 作者:行者123 更新时间:2023-12-05 05:24:23 32 4
gpt4 key购买 nike

当我将我的 php 文件放在/home/tim_test 中时,它工作正常

当我将文件放入/home/tim_test/hmm 时,它不起作用。为什么不呢?

server {

listen 80;
root /home;
index index.php;

location /admin {

alias /home/admin/;
try_files $uri $uri.html $uri/ /home/admin/;
index index.html index.htm index.php;

}

location /tim_test/ {

alias /home/tim_test/;
try_files $uri $uri.html $uri/ /home/tim_test/;
index index.html index.htm index.php;

}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

location ~ \.php$ {

try_files $uri =404;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;

}

}

我尝试将我的文件编辑成这样以反射(reflect)文件夹更改,但它不起作用,当我在浏览器中访问/tim_test 时,我收到 403 forbidden

location /tim_test/ {

alias /home/tim_test/hmm/;
try_files $uri $uri.html $uri/ /home/tim_test/hmm/;
index index.html index.htm index.php;

}

谢谢!我很困惑。我尝试了 100 多次 nginx 重启和不同的事情。

编辑:如果我在 chrome 上访问该网站,我会收到 404 not found,我想我只是在 firefox 上收到 403,因为我曾多次尝试访问该站点。无论哪种方式,它都不起作用。

最佳答案

有一个very old open bug关于 nginx 关于 aliastry_files 指令。

关于您的第一个配置文件,两个 alias 指令是不必要的,因为两个位置 block 都继承了 root 的值并附加了该位置的值。

此外,try_files 指令的最后一个元素(/home/admin//home/tim_test/)不是 URI。

第一个配置文件应该是:

root /home;
location /admin {
try_files $uri $uri.html $uri/ /admin/;
index index.html index.htm index.php;
}
location /tim_test/ {
try_files $uri $uri.html $uri/ /tim_test/;
index index.html index.htm index.php;
}

关于子文件夹 hmm。除了 try_files 指令的最后一个元素(上面已解决)之外,配置看起来不错。这意味着问题可能与 alias/try_files 交互有关。

alias 的替代方案是内部重写,但将目标 URI 放在源 URI 的命名空间内可能会使解决方案变得不必要的困难。

关于php - Nginx 别名和子文件夹的 try_files 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34971191/

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