[英]nginx directories without slash
我有這個配置的nginx + phpfpm + phpmyadmin:
root /var/www/utils;
location ~ ^/phpmyadmin/.*\.(jpg|jpeg|gif|png|css|js|ico)$ {
root /var/www/utils;
}
location = /phpmyadmin {
index index.php;
}
location ~ ^/phpmyadmin.*(\.php|)$ {
index index.php;
fastcgi_index index.php;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
一切都很好,但如果我刪除“location = / phpmyadmin”,我會在_http:// server / phpmyadmin上收到403錯誤。
如何訪問所有子目錄,例如_http:// server / phpmyadmin / setup?
我得到“訪問腳本'/ var / www / utils / phpmyadmin / setup'已被拒絕 - 在每個目錄上都沒有斜線,如果我沒有為每個目錄編寫特殊配置。
如nginx文檔中所述 :
$ fastcgi_script_name變量獲取傳入請求URI的值, 如果URI以斜杠結束 ,則$ fastcgi_script_name附加使用fastcgi_index指令定義的內容。
因此,如果您的請求是“/ phpmyadmin / setup /”並且fastcgi_index設置為“index.php”,則$ fastcgi_script_name變量將為“/phpmyadmin/setup/index.php”。 因此$ document_root加$ fastcgi_script_name將是“/var/www/utils/phpmyadmin/setup/index.php”,這應該可以正常工作。
但是如果你發出像“/ phpmyadmin / setup”這樣的請求(最后沒有斜線),那么$ fastcgi_script_name將不會被fastcgi_index附加,即它只是“/ phpmyadmin / setup”。 並且$ document_root加上$ fastcgi_script_name將是“/ var / www / utils / phpmyadmin / setup”,由於沒有這樣的文件,因此無效。
您應該使用帶有斜杠的URI,或者定義一個重寫規則(在“服務器”配置塊中),這將為不以某些擴展名結尾的URI添加斜杠(以便像“/ phpmyadmin / myscript”這樣的URI。 php“不會轉換成”/phpmyadmin/myscript.php/“。它應該是這樣的:
rewrite ^([^\.]*[^\/])$ $1/ break;
但是,我沒有測試過自己。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.