[英]Nginx alias and try_files to subfolder doesn't work
当我将我的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,因为我尝试了很多次。 无论哪种方式,它都不起作用。
关于alias
和try_files
指令, nginx
上存在一个非常古老的开放错误 。
关于第一个配置文件,不需要两个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的名称空间中可能会使解决方案不必要地困难。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.