热搜词
发表于 2022-5-21 09:46:27 | 显示全部楼层 |阅读模式
THINKPHP5,LARAVEL等项目部署在虚拟主机上无法指定PUBLIC根目录解决方案
众所周知用虚拟主机站点都是默认的wwwroot目录,虚拟主机的默认跟目录是无法修改的。

但是thinkphp程序部分程序在开发的时候没有调整对应的程序入口,就需要网站访问默认指向到Public目录,其实不只tp,现在很多框架默认都把web对外的访问放在public下面了,为了网站更加安全鱼与熊掌不能兼得啊 。


方案一:传统方式,把入口文件和伪静态配置文件,移到根目录。https://www.xiunima.com/136.html

方案二:根目录下新建apache服务的301跳转配置文件。不推荐。

补充1:

我在根目录下的添加了一个index.php入口文件,然后访问,没有问题,此时,我将根目录下的think“命令行入口文件”删除,则运行出错。再恢复think“命令行入口文件”,访问又正常了。这个根目录下的think“命令行入口文件”是一个必须有文件吗?

zdz232018年06月14日
问题出在核心代码thinkphp\library\think\Loader.php文件,第68行,判断think文件是否存在,如果不存在,则通过dirname()将目录减少一级。所以,如果index入口文件如果是在public目录下,这样是没有问题的,如果index入口文件是放在项目根目录下,这时候就会有问题了,为了不修改核心代码,可以在根目录下放一个空的think文件即可。如果觉得不爽,就可以在这个核心代码位置,按自己的需求修改一下。
http://www.thinkphp.cn/topic/57528.html

补充2:有时候会报错“找不到模块”,加上index.php就正常。这是.htaccess伪静态规则不对。部署环境不同,有时候加?,有时候不加。




全部评论1
回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|管理员之家 ( 苏ICP备2023053177号-2 )

GMT+8, 2024-12-23 05:44 , Processed in 0.162506 second(s), 25 queries .

Powered by Discuz! X3.5

Cpoyright © 2001-2024 Discuz! Team