[英]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.