用户
 找回密码
 入住 CI 中国社区
搜索
查看: 3082|回复: 1
收起左侧

郁闷的要死啊,隐藏index.php出现错误!

[复制链接]
发表于 2009-11-14 12:09:25 | 显示全部楼层 |阅读模式
这个问题已经折腾我很多天了,我向服务器(万网)的技术支持咨询三四次了,他们就坚持说服务器设置没问题,还给我一些简单的例子,确实没问题,但是我这个隐藏index.php的rewrite规则就是一直不能执行!
代码如下:

  1. RewriteEngine on
  2. RewriteCond $1 !^(index\.php|images|plugins|uploads|css|flash|js|xml|ad|robots\.txt)
  3. RewriteRule ^(.*)$ index.php/$1 [L]
复制代码

症状:
不管点击什么页面,一直显示首页,比如点击http://xxx.com/act,显示的仍然是首页的内容,必须加上index.php(http://xxx.com/index.php/act)才能正常访问。
我为了测试一下服务器,就把这句代码改了:

  1. RewriteRule ^(.*)$ index.phpx/$1 [L]  #php后边加了个x
复制代码

然后访问http://xxx.com/act就会错误提示:
未命名.jpg

说明服务器确实能认识这句rewrite规则。
那么原因出在哪里呢?请论坛里的高人们指点一下,网站因为这个问题,已经关闭2天了,我一直没能找到解决办法,如果不隐藏index.php就会影响SEO,所以不可行。
 楼主| 发表于 2009-11-14 13:09:07 | 显示全部楼层
问题在HEX老大的帮助下已经顺利解决,下面我就把解决方法及心得放出来供像我一样遇到这类问题的兄弟们参考:
我的解决方法:
$config['uri_protocol']= "ORIG_PATH_INFO"; //config里把这里换成这个ORIG_PATH_INFO
我上网查了一些资料才知道,原来服务器变量在不同的服务器上设置的不一样,原本要通过$_SERVER['PATH_INFO'] 来获取网址路径,但是我的这台服务器上要用 $_SERVER['ORIG_PATH_INFO'] 来取。
大家可以研究一下CI的源码里关于这一点儿的处理方式。

本版积分规则