【问题标题】:Differentiate between Subdomains and Subdirectories区分子域和子目录
【发布时间】:2012-09-14 17:58:19
【问题描述】:

我有一个非常定制的网站,设置在子域上; sitename.domain.com,它有一些页面(所有子域都相同)sitename.domain.com/this-page。每个站点都有“/this-page”。

我们有人对使用我们开发的一些东西感兴趣,但他们很喜欢使用子目录; domain.com/sitename 当然也有 domain.com/sitename/this-page

我的问题是,我有一些代码

$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 }

【问题讨论】:

    标签: php subdomain subdirectory


    【解决方案1】:

    [编辑] 尝试了http://www.php.net/manual/en/reserved.variables.server.php#100881 的解决方案,但对我不起作用,所以我这样做了:

    <?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/
    }
    ?>
    

    【讨论】:

    • 这实际上就是我最终为自己制定的解决方案(虽然你的解决方案更多......“优雅”,哈哈!)感谢您的帮助:)
    【解决方案2】:

    @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 之前到达那里的方式。 :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-17
      • 2016-06-17
      • 2013-07-11
      • 1970-01-01
      • 2023-03-14
      • 2011-01-15
      • 2011-06-13
      • 1970-01-01
      相关资源
      最近更新 更多