虚拟主机thinkphp 关于隐藏程序自动生成的public的方法

admin 2019-08-28 PM 402℃ 0条

当前有很多网站都是用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);
        }
标签: thinkphp

非特殊说明,本博所有文章均为博主原创。