当前有很多网站都是用thinkphp做的。但是tp5的入口文件在public下。若上传到主机商的虚拟主机中可能遇到网站根目录的问题。
因为大多数虚拟主机商不支持修改网站的根目录。都是固定的wwwroot。
以下以linux下主机为例:
使用伪静态修改网站入口位置为public
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/public/
RewriteRule ^(.*)$ /public/$1 [L]
</IfModule>
但是这样会导致请求url中含有public,thinkphp会在助手函数url()生成的地址中自动加上public。
去掉public的方法,找到源头thinkphp/library/think/Url.php,大概234行
self::$bindCheck = false;
或
$this->bindCheck = false;
在后面加上
if(preg_match('/public/', $url)){
$url = preg_replace('/\/public\//', '/', $url);
}