重写Apache的路由

Tyrannoaurus 2017-01-11 04:47:30
比如我现在有个路由是 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是我的根目录。求大神解答?
...全文
529 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tyrannoaurus 2017-02-15
  • 打赏
  • 举报
回复
引用 8 楼 fdipzone 的回复:
.htaccess放在合适的地方,不要全部都放根目录,因为有放根目录,所有访问的都会判断一次。影响效率。 你这种应该放入一层。
我之前就是这样子操作的,但是失败了!我里面的那个rewrite 后面跟的路径也做的相应的改变了。
傲雪星枫 2017-02-15
  • 打赏
  • 举报
回复
你放的目录是怎样的呢?
傲雪星枫 2017-01-15
  • 打赏
  • 举报
回复
.htaccess放在合适的地方,不要全部都放根目录,因为有放根目录,所有访问的都会判断一次。影响效率。 你这种应该放入一层。
Tyrannoaurus 2017-01-15
  • 打赏
  • 举报
回复
引用 6 楼 fdipzone 的回复:
.htaccess 的位置是相对的,所以位置不同,里面的rewrite会不同。 放里面的解决方法比较好。
您的意思是不要把.htaccess文件和项目的根目录放在同一层吗?把.htaccess放在根目录里比较好吗?但是这样那个改写路由可以成功吗?
comet_fly 2017-01-14
  • 打赏
  • 举报
回复
localhost是你本地服务器的域名,你采用http://localhost/books/1这样,默认是回去读取apache下的目录下的那个books项目目录的,但是明显这个是不存在的,如果你需要这样的效果,可以通过本地域名的形式,设置一个域名指向到silm目录下,然后就可以通过访问http://设置的本地域名/books/1来进行访问,你可以测试下
傲雪星枫 2017-01-14
  • 打赏
  • 举报
回复
.htaccess 的位置是相对的,所以位置不同,里面的rewrite会不同。 放里面的解决方法比较好。
Tyrannoaurus 2017-01-14
  • 打赏
  • 举报
回复
引用 1 楼 good8888job 的回复:
一起等答案.
直接把.htaccess文件放到和silm同级就可以了
Tyrannoaurus 2017-01-14
  • 打赏
  • 举报
回复
引用 3 楼 comet_fly 的回复:
localhost是你本地服务器的域名,你采用http://localhost/books/1这样,默认是回去读取apache下的目录下的那个books项目目录的,但是明显这个是不存在的,如果你需要这样的效果,可以通过本地域名的形式,设置一个域名指向到silm目录下,然后就可以通过访问http://设置的本地域名/books/1来进行访问,你可以测试下
原理应该是这样的,不过更简单的方法是,直接把.htaccess文件放到和silm同级就可以了
good8888job 2017-01-13
  • 打赏
  • 举报
回复
一起等答案.
gavin198977 2017-01-13
  • 打赏
  • 举报
回复
silm/index.php/books/$1 文件名后面加目录?

21,882

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧