2016-01-24 143 views
2

当我把我的PHP文件到/ home/tim_test它工作正常Nginx的别名,try_files到子文件夹不起作用

当我把我的文件在/ home/tim_test /嗯这是行不通的。为什么不?

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; 

     }  

} 

我试图编辑我的文件看起来像这样以反映该文件夹的变化,但它不工作,我得到403禁止当我访问/ tim_test在浏览器中

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重启和不同的事情。

编辑:如果我去那里在铬我得到一个404没有找到,我想我只得到了404在Firefox上,因为我试图访问该网站很多次。无论哪种方式,它不起作用。

回答

0

有关nginxvery old open bug关于aliastry_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的名称空间内可能会使解决方案变得不必要地困难。