Nginx别名和try_files到子文件夹不起作用

时间:2016-01-24 01:29:12

标签: php nginx alias subdirectory

当我将我的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,因为我尝试访问该网站很多次。无论哪种方式,它都不起作用。

1 个答案:

答案 0 :(得分:0)

关于nginxalias指令,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的命名空间中可能会使解决方案变得不必要。