本帖最后由 vikinghetty 于 2012-07-16 15:17:48 编辑

解决方案 »

  1.   


    <IfModule mod_rewrite.c>
       RewriteEngine on
       RewriteCond %{REQUEST_FILENAME} !-d
       RewriteCond %{REQUEST_FILENAME} !-f
       RewriteRule ^(.*)$ index\.php/$1 [QSA,PT,L]
    </IfModule>这样试试
      

  2.   

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]经测试,没有发现你说的现象!
      

  3.   


    十分感谢帮忙测试,正常情况的确不应该出现这种现象,所以称之为诡异……难道是我的Apache或PHP配置错误?可是这个查错范围太大了,不知道往什么地方入手,头大啊……
      

  4.   

    发现一个重要线索,问题肯定就在这里:将.htaccess文件删除以后:运行:http://localhost/index/
    结果:直接载入了index.php(请问这是Apache还是PHP的设置?应该如何取消呢?)
      

  5.   

    本帖最后由 PhpNewnew 于 2012-07-16 20:23:51 编辑
      

  6.   


    谢谢回答先。但我的意思不是这个呀……运行:http://localhost/index/ (注意index目录不存在)
    我要的结果是:404 Not Found但是Apache居然自动跳转到index.php了。只有index会发生这种情况,愁呀……
      

  7.   

    apache 的404错误自定义页自己设置过吗?
    url重写有吗?
      

  8.   

    那你先检查 httpd.conf 中的 <IfModule mod_rewrite.c> 一节
      

  9.   


    没有自己设置过404页。不过图方便装的是Appserv(一键安装环境),然后修改vhosts.conf配置一些虚拟主机。删除.htaccess不重写也也是一样的情况。
      

  10.   

     诡异,不可能这个样子呀,你把别人安装好的.htaccess拷贝过来,测试一下,能不能跑起来,在自己修改为自己想要的效果,在测试,出问题再来问~~
      

  11.   


    实际上的问题是,我的Apache默认开启了一个重定向(就算删除.htaccess文件也一样),如果index目录不存在,它就自动访问index.php文件。比如:http://localhost/index/当index目录不存在时,应该出现404 Not Found错误页面,但Apache却去自动找index.php了……
      

  12.   

    经过无数次试验,最后问题终于自己解决了:搜索Apache配置文件httpd.conf中的下面这行,在开头加上“#”号注释掉即可,具体原因不明……Options Indexes FollowSymLinks MultiViews ExecCGI
    (这样的话,如果在MVC模式中写Controller时最好不要用index,因为无法保证每台机器上的Apache都关闭了此功能。)希望能给遇到同样问题的后来人带来帮助,少走弯路,特存案于此,以供搜索。最后:十分感谢楼上几位朋友对我无私热心的帮助,谢谢!好人好报,祝你们每天都开心快乐!