Nginx

NGINX:主要腳本未知 - 呼叫帶有控制器前綴的動態 URL 時

  • May 3, 2018

我們面臨一個問題,我們無法解決它。我們目前能夠按預期執行我們的應用程序 - 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/*.phpURL index.php

你有兩個選擇:

  1. 重定向所有.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;
}

引用自:https://serverfault.com/questions/910520