我们面临一个问题,但无法解决。我们目前能够按预期运行我们的应用程序 - 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/*.php
为index.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;
}