记录技术收获,分享个人心得

人生如负重远行,不可急于求成

虚拟主机使用public作为根目录

目前部分程序需要使用public作为主目录,比如thinkphp5这种模版程序,而国内大多数主机提供商的虚拟主机根目录是wwwroot,他们不会允许虚拟主机用户去修改网站的根目录,我们可以添加规则实现跳转访问public目录,规则参考:

Linux虚拟主机:

.htaccess: 

RewriteEngine on 

RewriteCond %{REQUEST_URI} !^public 

RewriteRule ^(.*)$ /public/index.php?s=/$1 [L] 

windows虚拟主机(这里提供IIS7以上规则):

web.config:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="public" stopProcessing="true">
		   <match url="^(.*)$" ignoreCase="false" />
		      <conditions logicalGrouping="MatchAll">
			 <add input="{URL}" pattern="^/public/" ignoreCase="false" negate="true" />
		      </conditions>
		   <action type="Rewrite" url="/public/{R:1}" />
		</rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

上述操作会导致请求url中含有public,thinkphp会在助手函数url()生成的地址中自动加上public。

去掉public的方法。

找到源头调整。位置thinkphp/library/think/下Url.php

self::$bindCheck = false  #找到这行位置,在后面加上
或者是$this->bindCheck = false; 大概234行
if(preg_match('/public/', $url)){
            $url = preg_replace('/\/public\//', '/', $url);
        }


点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注

hi~

你好,欢迎来到我的博客,欢迎留言。

快速搜索:







Generic selectors

Exact matches only


Search in title


Search in content



Search in posts


Search in pages

欢迎关注我:

微博
steam
网易云音乐
QQ
500px

常用命令:

http://www.gaoshan.me/cmd