tp5跳转访问路径错误

在ThinkPHP5中使用URL辅助函数时遇到路径错误的问题,通过调整Request.php中的URL处理逻辑解决了缺少index.php的问题。

刚搭建了一个thinkphp5的框架,在用辅助函数url()做跳转的时候发现访问错了,,,框架的结构是没有改变的,入口文件依然放在public目录下


访问报错


路径不对,,,这就很难受了,,,用上

\think\Url::root("/index.php");

$url = \think\Url::build("index/index/ceshi");

这个地址就可以访问成功

对比后发现少了个index.php

这就好办了,那就是去找url()的麻烦嘛

找到url()方法,然后一路顺藤摸瓜找下去,最后在 tp5\thinkphp\library\think\Request.php里面找到了问题

Request.php也有一个url方法 


这个方法在使用辅助函数url 的时候和build()的时候都会调用,不同的是,在调用build 的时候我调用了\think\Url::root("/index.php");这就给Request.php里的url方法的参数url赋值了,也就是$this->url = "index.php",而反观辅助函数url,就要苦逼的进入Request.php   url方法里的elseif判断了,

很不巧,进入的是isset($_SERVER['REQUEST_URI'])这个判断,更不巧的是,他的$this->url被赋值"/",这就不对了嘛。把入口文件给扔了,,,

解决办法


在isset($_SERVER['REQUEST_URI'])后面加个与条件$_SERVER['REQUEST_URI']!='/'这就ok 了。

不过应该还可以在.htaccess或者其他地方做文章,还没有探究,各位大神不吝赐教

在小皮面板上部署并运行多个 ThinkPHP5 项目,主要涉及以下几个关键步骤: ### ### 配置多个ThinkPHP5项目的前提条件 确保服务器或虚拟主机已经安装了小皮面板,并且配置好了 LNMP(Linux、Nginx、MySQL、PHP)环境。此外,需要确认每个 ThinkPHP5 项目都已上传至服务器的指定目录,并具备独立的域名或子域名绑定。 ### ### 添加网站并绑定域名 在小皮面板中添加新的网站,为每个 ThinkPHP5 项目分配不同的域名或子域名。例如,若主域名为 `example.com`,可以分别为多个项目设置如 `project1.example.com` 和 `project2.example.com` 的子域名[^2]。 ### ### 设置网站根目录 每个网站需指向其对应的 ThinkPHP5 项目根目录。通常,ThinkPHP5 项目的入口文件位于 `/public` 文件夹内,因此应将网站根目录设置为该路径。例如,对于 `project1.example.com`,将其根目录设置为 `/www/wwwroot/project1/public`,以此类推。 ### ### 修改伪静态规则以支持URL重写 为了使 ThinkPHP5URL 重写功能正常工作,避免出现点击跳转内页 404 的问题,需要在小皮面板中为每个网站配置合适的伪静态规则。对于 ThinkPHP 框架,可使用以下 Nginx 伪静态规则: ```nginx location / { if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=$1 last; break; } } ``` 此规则会检查请求的文件是否存在,如果不存在,则将请求重写到 `index.php` 入口文件,从而正确解析 ThinkPHP 的路由机制[^1]。 ### ### 配置数据库连接信息 每个 ThinkPHP5 项目可能需要连接不同的数据库,因此需修改各自项目的数据库配置文件。找到 `config/database.php` 或 `.env` 文件(取决于项目使用的配置方式),根据实际情况填写正确的数据库类型、地址、名称、用户名和密码等信息[^3]。 ```php // config/database.php 示例配置 return [ 'type' => 'mysql', 'hostname' => 'localhost', 'database' => 'your_database_name', 'username' => 'your_username', 'password' => 'your_password', 'charset' => 'utf8', 'debug' => true, ]; ``` ### ### 调整PHP运行环境 确保 PHP 版本与 ThinkPHP5 框架兼容,一般建议使用 PHP 7.1 至 7.4 版本。同时,在小皮面板中启用必要的 PHP 扩展模块,如 `opcache`、`exif` 等,以及开启 `fileinfo` 支持文件上传等功能。此外,适当调整 `upload_max_filesize` 和 `post_max_size` 参数,以满足项目上传需求。 ### ### 测试与调试 完成上述配置后,访问各个项目的绑定域名,验证首页及内部页面是否能够正常加载。若仍然遇到 404 错误,应进一步检查伪静态规则是否生效,以及项目目录结构是否符合框架要求,特别是确认 `public/index.php` 是否存在并具有正确的权限设置[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值