使用https或http访问页面时,我的base_path无法正常工作

时间:2015-11-12 02:18:43

标签: php path

我在Godaddy托管了一个网站,可通过https和http访问。 我在conf.php上全局声明了一个BASE_PATH var:

define('BASE_URL','//theventuregame.com');

我在我的网站上几乎无处不在地使用这个BASE_URL var ..问题是当人们使用http://theventuregame.comhttps://theventuregame.com之类的方式访问它时一切正常......但是当他们尝试输入www.theventuregame时.com重定向到https://www.theventuregame.com并且BASE_PATH与URL不同并产生问题。

如何使我的BASE_PATH始终与人们访问页面相同? 我将它用于httaccess:

RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

总是将网站重定向到https,所以我可以将我的BASE_PATH作为:

define('BASE_URL','https://www.theventuregame.com');

但有些人直接将网站改为theventuregame.com,并将其重定向到https://theventuregame.com,我的BASE_PATH再次与众不同..

我希望我对自己的问题很清楚......

感谢名单

1 个答案:

答案 0 :(得分:0)

您可以使用PHP $_SERVER变量来确定网站的基本网址。

对于我的网站,我使用此字符串:

$siteRootUrl = (!empty($_SERVER['HTTPS']) ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST']."/";

使用$_SERVER['HTTP_HOST']设置协议和主机,然后连接到根URL字符串。

这样的字符串可以帮助您,然后您可以调用define('BASE_URL', $siteRootUrl);并仍然在网站范围内使用它。那么人们是通过HTTP还是HTTPS访问您的网站,或者他们是否使用www无关紧要。或不。

有关PHP $_SERVER超全局的更多信息,请查看here

正如旁注,如果您正在运行HTTPS,那么最好继续强制人们使用HTTPS来保证安全性。