サイト内のページに相対パスを使用する必要がありますか?またはそれは重要ではありませんか?

StackOverflow https://stackoverflow.com/questions/1016917

質問

ドメイン名内のページにリンクする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ファイル)を参照します。

理由:

  1. これにより、途方もない量の頭痛を引き起こすことなく、いつでもドメイン名を変更できます
  2. ページを非常に簡単に再構築できます。

ただし、Webサイトが本当にそれほど大きい場合は、リソースを移動するときにリンクを置き忘れないように、リンクとリンクIDのデータベースが必要になります。これは、microsoft.comでMicrosoftが行うことです。

jrh

私はジョシュと一緒にいます。...アプリケーションルートへの相対パスを指定します:/myfolder/myfile.html

私の場合、これには、各サイトがデフォルトサイト以外のアプリケーション(IIS)である開発マシンで作業し、ライブサイト自体で作業するという追加の利点があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top