NGINX:主要脚本未知 - 使用控制器前缀调用动态 URL 时

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。不幸的是,浏览器中的输出是File not found.以下错误记录在nginx 1.10

FastCGI 在 stderr 中发送:“主脚本未知”同时从上游读取响应头...

->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;
    }
}

如何将这个以 结尾的动态 URL 重写/controllerPrefix/*.phpindex.php

答案1

您有两个选择:

1)重定向全部.php以to结尾的 URI /index.php,如果没有匹配的脚本文件 - 则try_files向现有location ~ \.php$块添加一条语句(参见这个文件详情请见):

location ~ \.php$ {
    try_files $uri /index.php?$args;
    ...
}

或者,2)重定向以 to 开头的 URI /controllerPrefixng-/index.php添加一个新location块(请参阅这个文件详情请见):

location ^~ /controllerPrefix/ {
    rewrite ^ /index.php last;
}

相关内容