当我把我的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;
}
}
我尝试编辑我的文件以如下所示以反映文件夹更改,但它不起作用,当我在浏览器中访问/tim_test 时,我被禁止 403
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,我想我只在Firefox上得到403,因为我尝试访问该网站很多次。但无论哪种方式,它都不起作用。
nginx
上有一个关于alias
和try_files
指令的非常古老的开放错误。
对于您的第一个配置文件,两个 alias
指令是不必要的,因为两个位置块都继承 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 的命名空间中可能会使解决方案变得不必要地困难。