2016-01-24 260 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的名稱空間內可能會使解決方案變得不必要地困難。