Nginx
NGINX:主要腳本未知 - 呼叫帶有控制器前綴的動態 URL 時
我們面臨一個問題,我們無法解決它。我們目前能夠按預期執行我們的應用程序 - SEO URL 執行起來就像一個魅力,並且正在重寫為
index.php
. 問題是,我們有一個額外的 URL 模式,例如:
/controllerPrefix/a-param.php
/controllerPrefix/an-other-param.php
/controllerPrefix/an-other-other-param.php
…我們也需要重寫
index.php
。我們無法編寫這個以 . 結尾的 URL 動態 URL.php
。請注意,沒有物理 PHP 文件,例如a-param.php
-> 它是一個動態模式,以.php
. 不幸的是,瀏覽器中的輸出是nginx 1.10File not found.
中記錄了以下錯誤:從上游讀取響應標頭時在標準錯誤中發送的 FastCGI:“主腳本未知”…
-> 404 未找到
NGNIX 配置:
server { listen 80; index index.php index.html; root /var/www/public; location / { try_files $uri /index.php?$args; } location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass app:9000; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; } }
如何重寫這個以 結尾的動態
/controllerPrefix/*.php
URLindex.php
?
你有兩個選擇:
- 重定向所有
.php
以to結尾的 URI/index.php
,如果沒有匹配的腳本文件 - 將try_files
語句添加到現有location ~ \.php$
塊(有關詳細資訊,請參閱此文件):location ~ \.php$ { try_files $uri /index.php?$args; ... }
/controllerPrefixng
或者,2) 以to開頭的重定向 URI/index.php
- 添加一個新location
塊(有關詳細資訊,請參閱此文件):location ^~ /controllerPrefix/ { rewrite ^ /index.php last; }