urlManager的问题

在配置文件的components字段下加上如下内容:

'urlManager'=>array('urlFormat'=>'path',),

运行文档中的例子,出现404错误,请教原因。

运行blog么?它本来就是这样配置的啊。你是否隐藏index.php?如果这样,你还需要.htaccess配置。

我的意思是用Yii工具生成一个应用,然后在配置文件中的components字段下加上如下内容: 

'urlManager'=>array('urlFormat'=>'path',),会出现404错误,怎么做才能避免这个这个错误。我不希望在URL中出现?和&等字符。(我是新手,表拍我哈)

你访问什么URL时会出现404?

多谢强哥细心指教!

我的应用所在文件夹是app,是利用脚手架生成的。我不想在URL中出现?和&等字符,所以就在配置文件中加上了:

'urlManager'=>array('urlFormat'=>'path',),

这样本来是http://127.0.0.1/app/index.php?r=site/login就变成了http://127.0.0.1/app/index.php/site/index,出现404错误

你这个404错误是apache报的还是Yii报的?如果是前者,你可能需要更改apache的配置。如果是后者,你print_r($_SERVER)看看是什么?

print_r($_SERVER);内容如下:

Array ( [SCRIPT_URL] => /app/ [SCRIPT_URI] => http://127.0.0.1/app/ [HTTP_ACCEPT] => / [HTTP_ACCEPT_LANGUAGE] => zh-cn [HTTP_USER_AGENT] => Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; QQDownload 538) [HTTP_ACCEPT_ENCODING] => gzip, deflate [HTTP_HOST] => 127.0.0.1 [HTTP_CONNECTION] => Keep-Alive [HTTP_COOKIE] => PHPSESSID=ui4gdse9prrlna58tcvtqvgec2 [PATH] => c:\ruby\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;D:\bak\php\ext;C:\Program Files\MySQL\MySQL Server 5.0\bin;D:\PHP5;D:\PHP5\PEAR;D:\yii\framework [SystemRoot] => C:\WINDOWS [COMSPEC] => C:\WINDOWS\system32\cmd.exe [PATHEXT] => .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.RB;.RBW [WINDIR] => C:\WINDOWS [SERVER_SIGNATURE] => [SERVER_SOFTWARE] => Apache/2.2.4 (Win32) PHP/5.2.9-2 [SERVER_NAME] => 127.0.0.1 [SERVER_ADDR] => 127.0.0.1 [SERVER_PORT] => 80 [REMOTE_ADDR] => 127.0.0.1 [DOCUMENT_ROOT] => C:/php_root/yii/demos [SERVER_ADMIN] => admin@local [SCRIPT_FILENAME] => C:/php_root/yii/demos/app/index.php [REMOTE_PORT] => 2568 [GATEWAY_INTERFACE] => CGI/1.1 [SERVER_PROTOCOL] => HTTP/1.1 [REQUEST_METHOD] => GET [QUERY_STRING] => [REQUEST_URI] => /app/ [SCRIPT_NAME] => /app/index.php [PHP_SELF] => /app/index.php [REQUEST_TIME] => 1245373684 )

你的服务器配置有问题:$_SERVER['REQUEST_URI']的值不对,正常的应该是/app/index.php/site/index,不然的话没法解析出pathinfo (也就是site/index这一部分)

谢谢强哥指点。

那么应该怎样修改服务器配置呢?

这个你得去google了,我也不是很清楚。

终于解决了,原来要写RewriteRule

粗心哦