当我将我的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,因为我尝试访问该网站很多次。无论哪种方式,它都不起作用。
答案 0 :(得分:0)
关于nginx
和alias
指令,try_files
上有very old open bug。
关于您的第一个配置文件,两个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的命名空间中可能会使解决方案变得不必要。