使用path_info后与rewrite后出现的问题

#1 cgjp123

开启url_path_info后,URL路径就变成http://localhost/speedphp/index.php/main/show,中间多了个index.php,看起不安逸,就加了个.htaccess文件


RewriteEngine on
RewriteBase /speedphp/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}/index\.html !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,L]


在访问时URL就可以使用http://localhost/speedphp/main/show,看起要舒服些
但是出现一个问题
在访问http://localhost/speedphp/的时候,出现路由错误
打印URL.发现解析成http://localhost/speedphp/index.php/
多了个'/'
所以路由错误
请问有什么好的解决办法啊

我自己是在speedPHP.php文件中构造执行路由之前加了一行判断,
if($_REQUEST[$GLOBALS['G_SP']["url_controller"]]==''){
$_REQUEST[$GLOBALS['G_SP']["url_controller"]] = $GLOBALS['G_SP']["default_controller"];
}

问题是解决了

请问下还有什么更好的办法没,比如在rewrite规则中如何写会避免这种问题,谢谢,请高手教一下

2010-09-30 15:08:15

#2 jake

PATH_INFO和URLREWRITE不要同时使用,或者说URLREWRITE可以说是更完美的PATH_INFO,所以开了URLREWRITE就不需要PATH_INFO了。

楼主的情况,先关闭PATH_INFO(或者取消PATH_INFO)就OK了。

2010-09-30 16:10:14