我已经将Yii 1网站移动到使用NGINX的新Ubuntu服务器,并且除了没有index.php部分的已清理URL以外,一切正常。例如,页面http:// **** / site / about重定向到主页,但http://****/index.php/site/about显示正确的页面。我当前的服务器块配置文件包含此位置规则:
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_param QUERY_STRING $query_string;
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
我也尝试过使用
try_files $uri $uri/ /index.php$uri?$args;
但最终会出现重定向循环。
似乎重写/index.php$uri?$args永远不会对$ uri检查进行验证。
在Yii配置中我有
'urlManager' => array (
'urlFormat' => 'path',
'showScriptName' => false,
'caseSensitive' => false,
'rules' => array (
'<public_url:about>'=>'site/about',
'<controller:\w+>/<id:\d+>' => '<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
....
所以问题是如何使http:// **** / site / about显示与http://****/index.php/site/about请求相同的页面?
提前谢谢。
答案 0 :(得分:0)
似乎重写/index.php$uri?$args永远不会对$ uri进行验证 检查。
没有。 location \.php$
仅匹配以.php
结尾的URI。添加路径信息后,它将不再匹配。
使用路径信息处理php脚本的正确方法是将终止$
替换为(/|$)
,并使用fastcgi_split_path_info
指令将路径信息与脚本路径名分开。有关详细信息,请参阅this document。