ThinkPhp5.0 相对路径转发路径重复问题

(个人经验,仅供参考,错误之处,敬请谅解)

问题详述

使用ThinkPhp框架时,路由重写规则如下:

<IfModule mod_rewrite.c>
  Options +FollowSymlinks -Multiviews
  RewriteEngine On

  RewriteCond %{REQUEST_FILENAME} !^$
  RewriteRule ^(.*)$ public/index.php/$1 [QSA,PT,L]
</IfModule>

也就是从项目根目录访问的任何链接重写到public/index.php?REQUEST_URL
这样更方便访问,而不是从public开始访问,框架默认是从public进行重写到index.php?REQUEST_URL

但在后面的超链接使用相对路径跳转时便遇到了尴尬的问题。

就像这样:

localhost:88/TourDiary/index/Index/index/Index/index/Index/showLogin

从第二个链接开始无论点什么都是到主页。

解决方案

解决这个问题,无非就是用绝对路径,当然怎么用绝对路径也是一个问题:

  1. 直接在页面链接中加上项目根目录 /poject_name/index/Idnex…,要改很多,当然麻烦
  2. 在应用配置或者额外配置中添加view_replace_str 中的’__PATH__’ 为’/project_name/…这样的话,换了服务器运行环境只要更改配置。
  3. 后面找了到一个能用的常量__ROOT__,是项目目录下的public文件夹,沾沾自喜,更科学点。
  4. 实际上tp的路由功能,只要定义好路径,那么访问更省事,也不会发生路径重复问题。(最方便科学的)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值