2

サブドメイン上に設定された、かなりカスタマイズされたサイトがあります。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/sitename/this-pageではなくdomain.com/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 }
4

2 に答える 2

2

[編集] 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/
}
?>
于 2012-09-14T18:06:24.327 に答える
1

@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をリロードする前にそこに到達した方法です。:)

于 2012-09-14T19:14:31.523 に答える