我的Nginx配置文件中的try_files指令似乎只適用於特定情況。以下是我的工作:Nginx的try_files不適用於以.php結尾的網址
location/{
try_files $uri $uri/ /route.php?_route_url=$uri;
}
如果我瀏覽到正確/admin/popups/image.php它加載,因爲這是現有文件 - (我相信這是在try_files語句中的第一個參數打)。如果我轉到/ admin/webpages /它正確加載 - 這將是第三個參數 -/admin/webpages /不存在,route.php將在/modules/webpages/admin/index.php文件中提取。當我進入/admin/webpages/edit.php時,我得到了一個404.在我看來,它應該會在try_files中的第三個參數中工作。如果我導航到/route.php?_route_url=/admin/webpages/edit.php它工作正常。
我一直在這一點上敲我的頭,我無法弄清楚。我確定這很簡單,但我看不到它。謝謝。
UPDATE: 經進一步調查,似乎這個塊沒有反映在上面的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;
}
不知道這會幫助你。我猜我需要在這個之前讓原始模塊生效。由於
我已經完成了多次。謝謝。 – user2532598