サイト内のページに相対パスを使用する必要がありますか?またはそれは重要ではありませんか?
-
06-07-2019 - |
質問
ドメイン名内のページにリンクするURLを定義する最善の方法は何なのかと思っていました。たとえば、ドメインwww.example.comの場合、次のようなリンクを設定できます
<a href="http://www.domain.com/test.html">test</a>
または
<a href="test.html">test</a>
私が遭遇した問題の1つは、テンプレートを使用しているときに、相対リンクでhtmlテンプレートを使用すると、www.example.com / directory2ディレクトリに同じテンプレートを使用できないことです。そのページでは動作しません。CSSファイルでもJavaScriptファイルでもありません。
テンプレートを複製するか、絶対にパスを設定する必要がありました。絶対パスを選択しました。そのため、テンプレートパスは http://www.mydomain.com/ で始まります。これによりパフォーマンスの問題が発生しますか複数のHTTPリクエスト、ドメイン解決、その他のようなものですか?これに関するあなたの提案/コメントは何ですか?
ありがとう。
解決
絶対パスを使用してもオーバーヘッドは追加されませんが、ローカルリンクの一般的な方法は相対リンクを使用することです。相対リンクは、wgetやDown-Them-All(Webサイトダウンロードツール)などのツールによって、絶対リンクとは異なる方法で処理できます。
ただし、テンプレートソリューションが絶対リンクで最適に機能する場合は、絶対リンクを使用することは珍しいことではありません。暫定的に、元のページにリンクしてサイトのコンテンツがスクレイプされた場合、絶対リンクが有効に機能します(ソース: http://www.navegabem.com/linking-strategy.html )。
他のヒント
絶対に相対パスを使用します。
これにより、以下の機能が提供され、ドメイン名が変更された場合に問題が発生しなくなり、ライブではなく別のサーバーでテストできるようになります。
すべてのパスをルート化できます
eg <a href="/test.html">test</a>
これは、ドメインを置くことと同じです。
[編集] mod rewriteを使用して、必要に応じてサイトを別のフォルダーに移動できます-参照 http://httpd.apache.org/docs/2.0/mod/ mod_rewrite.html#rewritebase
ジョシュ
相対パスを使用する必要があると思います。ドメインが削除または変更された場合でも、サイトは適切に機能し、それ以上の場合、htmlのパスははるかに短くなるためです。
また、ファイル構造を変更する場合に対応したい場合。 Webサイトの開発にhtmlを使用していると仮定します。 shtml / server side includeを使用して、次のような一般的なアイテムを分離できると思います。 メニュー
構造に変更があった場合、menu.shtmlを変更するだけです
これが役立つことを願って
Joshの提案は大丈夫ですが、Webサイトが仮想ディレクトリの下にある場合は失敗します。常に相対パスを使用することをお勧めします。
常に相対パスは、サイト内のリソース(ページ、cssファイル、jsファイル)を参照します。
理由:
- これにより、途方もない量の頭痛を引き起こすことなく、いつでもドメイン名を変更できます
- ページを非常に簡単に再構築できます。
ただし、Webサイトが本当にそれほど大きい場合は、リソースを移動するときにリンクを置き忘れないように、リンクとリンクIDのデータベースが必要になります。これは、microsoft.comでMicrosoftが行うことです。
jrh
私はジョシュと一緒にいます。...アプリケーションルートへの相対パスを指定します:/myfolder/myfile.html
私の場合、これには、各サイトがデフォルトサイト以外のアプリケーション(IIS)である開発マシンで作業し、ライブサイト自体で作業するという追加の利点があります。