比如我现在有个路由是 http://localhost/silm/index.php/books/1 。我想写成 http://localhost/silm/books/1 这样,我就在根目录下新建了一个.htaccess的文件。然后在里面写上
Options +FollowSymlinks
RewriteEngine on# 重写规则
RewriteRule ^books/(\d+)$   index.php/books/$1 [nc]
然后可以正常的访问。
现在我想改成 http://localhost/books/1 这样子访问,于是我把RewriteRule改写成了:
RewriteRule ^books/(\d+)$  silm/index.php/books/$1 [nc]
然后去访问,直接报404了。我就不明白了,为什么不可以这样子访问。silm是我的根目录。求大神解答?

解决方案 »

  1.   

     silm/index.php/books/$1  文件名后面加目录?
      

  2.   

    localhost是你本地服务器的域名,你采用http://localhost/books/1这样,默认是回去读取apache下的目录下的那个books项目目录的,但是明显这个是不存在的,如果你需要这样的效果,可以通过本地域名的形式,设置一个域名指向到silm目录下,然后就可以通过访问http://设置的本地域名/books/1来进行访问,你可以测试下
      

  3.   

    原理应该是这样的,不过更简单的方法是,直接把.htaccess文件放到和silm同级就可以了
      

  4.   

    直接把.htaccess文件放到和silm同级就可以了
      

  5.   

    .htaccess 的位置是相对的,所以位置不同,里面的rewrite会不同。
    放里面的解决方法比较好。
      

  6.   

    您的意思是不要把.htaccess文件和项目的根目录放在同一层吗?把.htaccess放在根目录里比较好吗?但是这样那个改写路由可以成功吗?
      

  7.   

    .htaccess放在合适的地方,不要全部都放根目录,因为有放根目录,所有访问的都会判断一次。影响效率。
    你这种应该放入一层。
      

  8.   

    我之前就是这样子操作的,但是失败了!我里面的那个rewrite 后面跟的路径也做的相应的改变了。