私は $_SERVER[DOCUMENT_ROOT] を頻繁に使用して、すべてのリンクが適切に機能するようにしています。例えば:
<link href="' . $_SERVER[DOCUMENT_ROOT] . '/favicon.ico" rel="icon" />
含まれているファイルの実際のパスは関係ありません。ドキュメント ルートを基準とした favicon の正しい場所が常に検索されます。
これはすべて、私の Web サーバーで期待どおりに機能します。ただし、私のローカル開発サーバー (Windows 7、Apache 2.2、構成された仮想ホスト) では、正しいパス (C:/Local/MySite) を指していますが、実際には何も起こりません (ファビコンが機能せず、スタイルシートと画像が機能しません)。ロードされるなど)
$_SERVER[DOCUMENT_ROOT] をローカルで動作させる方法はありますか?
"http://" と $_SERVER[HTTP_HOST] ( ) を使用すると、同じ期待される結果が得られることがわかりました。それ<link href="http://' . $_SERVER[HTTP_HOST] . '/favicon.ico" rel="icon" />
を行うことの欠点はありますか? または、引き続き $_SERVER[DOCUMENT_ROOT] を使用し、サーバーの書き換えルールを使用してローカルで実行されるものに解析し、ブラウザにはそのままにしておくこともできます。