Php 区分子域和子目录
我有一个非常定制的网站,建立在子域上sitename.domain.com并且它有一些页面(对于所有子域都是相同的)sitename.domain.com/这个页面。每个站点都有“/此页面” 我们有人对使用我们开发的一些东西感兴趣,但他们热衷于使用子目录domain.com/sitename当然也会有domain.com/sitename/this页面 我的问题是,我有一些代码Php 区分子域和子目录,php,subdomain,subdirectory,Php,Subdomain,Subdirectory,我有一个非常定制的网站,建立在子域上sitename.domain.com并且它有一些页面(对于所有子域都是相同的)sitename.domain.com/这个页面。每个站点都有“/此页面” 我们有人对使用我们开发的一些东西感兴趣,但他们热衷于使用子目录domain.com/sitename当然也会有domain.com/sitename/this页面 我的问题是,我有一些代码 $sN = 'http://www.' . $_SERVER['HTTP_HOST']; $PAGE = $sN .
$sN = 'http://www.' . $_SERVER['HTTP_HOST'];
$PAGE = $sN . '/this-page/';
- 但是,这当然不适用于子目录安装(它查找的是domain.com/this page/,而不是domain.com/sitename/this page
$setup = "GET THE HOME PAGE, REGARDLESS OF SETUP"
if($setup ( CONTAINS www.X.X.com)) { //do the code above }
else if ($setup ( CONTAINS www.X.com/X)) { //do different code }
[EDIT]尝试了来自的解决方案,但对我无效,因此我执行了以下操作:
<?php
$sitename = 'sitename';
if (strpos($_SERVER['HTTP_HOST'],$sitename)!==false){
echo 'you are in http://'.$_SERVER['HTTP_HOST'] . '/';
// you are in http://sitename.domain.com/
} else {
$path = explode('/',$_SERVER['PHP_SELF']);
unset ($path[count($path)-1]);
echo 'you are in http://' . $_SERVER['HTTP_HOST'] . implode('/',$path) .'/';
// you are in http://www.domain.com/sitename/
}
?>
来自@elcodedocle的答案是更好的解决方法。虽然他们提出了这个解决方案,但我最终也得到了一个(更恶心的)解决方案
//Let's grab the current url for other uses
$cur = 'http://www.' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
//Is this subdomains or subdirectories?
$TYPE = explode('.', $cur);
if(isset($TYPE[3])){
//Yay! It's subdomains! not stupid subdirectories!
$this_root = 'http://www.' . $_SERVER['HTTP_HOST'];
} else {
//Boo.... It's stupid subdirectories.... ;o(
$chunks = explode('/', $TYPE[2]);
$this_root = 'http://www.' .$TYPE[1]. '.' .$chunks[0]. '/' .$chunks[1];
}
?>
这同样有效,但它是一个不太优雅的解决方案。我最终使用了上面代码的一个稍加修改的版本,但对于那些想知道的人来说,这就是我在重新加载SO之前是如何做到这一点的。这实际上正是我最终为自己设计的解决方案(尽管你的解决方案有点“优雅”,哈哈!)感谢您通过以下方式提供的帮助:)