ネスト/ネストされたフォルダーに関係なく、スクリプト内で使用できるように、ハードコーディングせずにサイトURL を取得し、構成ファイル内の定数に保存しようとしています。この構成ファイルは、Web サイトのメイン インストール ディレクトリ内のフォルダーに保存されます。
例:
www.mydomain.com に Web サイトをインストールする
www.mydomain.com/my_folder/configuration.php にある構成ファイル
configuration.php ファイルで定数を宣言して、インストールされたパスをハードコードしなくても常に動的に取得できるようにします。そうdefine("MY_SITE_URL", ???? )
????の代わりに何が必要ですか?上記のコードで、メインの Web サイトがネストされたフォルダー内にインストールされている場合でも機能するようにするにはどうすればよいですか?
例: すべてのページには、ファイルの先頭に同じ configuration.php が含まれます。
サイト 1 に Web サイトをインストールします。
Web サイトのルート ディレクトリ: www.mydomain.com/demos/site1/
構成の場所: www.mydomain.com/demos/site1/my_folder/configuration.php
サブフォルダー: www.mydomain.com/demos/site1/1/index.php
index.php で MY_SITE_URL をエコーすると、www.mydomain.com/demos/site1/ が返されます。
サブフォルダー: www.mydomain.com/demos/site1/1/2/index.php
構成の場所: www.mydomain.com/demos/site1/my_folder/configuration.php
index.php で MY_SITE_URL をエコーすると、www.mydomain.com/demos/site1/ が返されます。
サイト 2 に Web サイトをインストールします。
Web サイトのルート ディレクトリ: www.mydomain.com/demos/site2/
構成の場所: www.mydomain.com/demos/site2/my_folder/configuration.php
サブフォルダー: www.mydomain.com/demos/site2/1/index.php
index.php で MY_SITE_URL をエコーすると、www.mydomain.com/demos/site2/ が返されます。
サブフォルダー: www.mydomain.com/demos/site2/1/2/index.php
構成の場所: www.mydomain.com/demos/site2/my_folder/configuration.php
index.php で MY_SITE_URL をエコーすると、www.mydomain.com/demos/site2/ が返されます。
TLD は変更される可能性があることに注意してください。つまり、www.mydomain.tk、www.mydomai.org、www.mydomain.net、www.mydomain.co.ca などに Web サイトをインストールしても、コードが役に立たなくなることはありません。
私がこれまでに持っているもの:
スクリプトをまとめてみました。ほぼ到達しましたが、100% ではありません。ここにあります:
function domain_url()
{
$pageURL = 'http';
if(isset($_SERVER["HTTPS"]))
if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
$pageURL .= "://";
if ($_SERVER["SERVER_PORT"] != "80")
{
$pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
}
else
{
$pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
}
//Remove any GET params from url
$remmove_get = strtok($pageURL, '?');
//Removes trailing slash only at the end of string. This slash is received only when accessing a page within sub folders.
$pageURL = preg_replace('{/$}', '', $remmove_get);
//Remove page name
$pageURL = dirname($pageURL);
return $pageURL;
}
define("MY_SITE_URL", domain_url().'/');
現在のコードの問題:
www.mydomain.com/demos/site1/ および www.mydomain.com/demos/site1/1/ でコードを実行すると、MY_SITE_URL が www.mydomain.com/demos/site1/ となります。これは正しいです。
しかし、www.mydomain.com/demos/site1/1/2/index.php でコードを実行すると、MY_SITE_URL をエコーすると www.mydomain.com/demos/site1/1/ が表示されますが、実際にはwww.mydomainが必要でした: .com/demos/site1/
これを解決するには?