私が使用しているもの:
$domain = $_SERVER['HTTP_HOST'];
$path = $_SERVER['SCRIPT_NAME'];
$themeurl = $domain . $path;
しかし、これはもちろん完全なURLを提供します。代わりに、完全なURLから現在のファイルと1つのディレクトリを差し引いて、末尾のスラッシュを差し引いたものが必要です。
したがって、ブラウザのURLドメインがlocalhost、https://、http://などであるかどうかに関係なく、親ディレクトリの完全な実際の(modの書き換えをバイパスする)URLパスは、末尾にスラッシュを付けずに指定されます。
これはどのように行われますか?「SCRIPT_NAME」以外のものを使用して(読んで)推測するXSSは安全ではないので、そのようなリスクがあります。
例:与えられた場合:
https://stackoverflow.com/questions/somequestions/index.php
必要:
https://stackoverflow.com/questions
末尾のスラッシュなし。
また、次のように機能する必要があります。
http://localhost/GetSimple/admin/load.php
取得するため
http://localhost/GetSimple
それが私がやろうとしていることです。
ありがとうございました。
編集: これが私が使用した実用的なソリューションです:
$url = isset($_SERVER['HTTPS']) ? 'https://' : 'http://';
$url .= $_SERVER['SERVER_NAME'];
$url .= htmlspecialchars($_SERVER['REQUEST_URI']);
$themeurl = dirname(dirname($url)) . "/theme";
それは完璧に動作します。