[英]Nginx try_files not working for urls ending in .php
我的Nginx配置文件中的try_files指令似乎只適用於特定情況。 這是我正在使用的:
location / {
try_files $uri $uri/ /route.php?_route_url=$uri;
}
如果我導航到/admin/popups/image.php它正確加載,因為這是一個現有文件 - (我相信這是try_files語句命中的第一個arg)。 如果我去/ admin / webpages /它正確加載 - 這將是第三個arg - / admin / webpages /不存在而route.php會在/modules/webpages/admin/index.php中提取一個文件。 當我去/admin/webpages/edit.php時,我得到一個404.在我看來它應該在try_files中擊中第三個arg並且工作。 如果我導航到/route.php?_route_url=/admin/webpages/edit.php它運行正常。
我一直在敲打這個問題,我無法理解。 我確信它很簡單,但我看不到它。 謝謝。
更新:進一步調查后,似乎這個塊沒有反映上面的try_files中應該發生的變化:
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors off;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
}
不確定這是否有幫助。 我猜我需要讓原始塊在此之前生效。 謝謝
試試這個,但要確保在服務器{}之間添加這個
location / {
try_files $uri $uri/ /route.php?_route_url=$args;
}
別忘了重啟nginx服務
我通過添加這個重寫行找到了我的問題的答案
rewrite ^/admin/((?!popups).)*/([a-zA-Z0-9_-]+\\.php?)$ /route.php?_route_url=$uri&$args last;
值得慶幸的是,我在/ admin /中只有一個實際目錄。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.