web-dev-qa-db-ja.com

index.htmlを使用する正しい方法

私はあなたの意見を聞きたい問題がかなりたくさんあるので、私はそれを十分にうまく説明できることを願っています。また、私はHTMLとCSSの知識しか持っていない初心者なので、強力なPHPを使用した簡単な解決策があることはほぼ確実ですが、助けにはなりません。

アドレスexample.com/blog.htmlに個人のブログがあり、いくつかのサブブログexample.com/blog/math.htmlexample.com/blog/coding.htmlなどへのリンクがあるとしましょう。したがって、私のルートフォルダにはblog.htmlblogが含まれます。フォルダー、blogフォルダー自体には、ファイルmath.htmlおよびcoding.htmlが含まれます。

まず、( Google Webmasters Tools から)SEOと美的目的のために、example.com.com属性とexample.com/index.html属性を_rel="canonical"_属性を追加して統合するのが良いことを学びましたindex.htmlのソース。他のいくつかのトリック(.././へのリンクなど)を使用して、Webアドレスに表示されるいindex.htmlを取り除きました。

そして今、このトリックはルートフォルダだけでなくanyフォルダにも使用できるのだろうか?つまり、blog.htmlblogフォルダーに移動し、index.htmlに名前を変更し、rel="canonical"を追加してexample.com/blog/index.htmlexample.com/blog/に統合します。
このトリックは、私のブログのアドレスをexample.com/blog.htmlからexample.com/blog/に変更します。

終了していません!また、Googleロボットがフォルダーのインデックスを作成する際に問題が発生しています。したがって、Google検索にsite:example.com/と入力すると、他の結果の中に、フォルダーexample.com/blog/へのリンクが未加工のファイル、アイコンなどとともに表示されます。私はそれを修正する他の方法もあると思いますが、上記の変更もトリックを行います-ブログフォルダ内のindex.htmlはユーザーが表示されないようにしますそのフォルダの実際の生のコンテンツは、Google検索でexample.com/blog/という正しいリンクのみが表示され、_rel="canonical"_が2番目の不要なリンクexample.com/blog/index.htmlが表示されないようにします検索結果で。

だから私の質問は:

  1. すべてのサブフォルダーにindex.htmlファイルを置くことは良い習慣ですか、それともルートフォルダーのみにあることを意図していますか?
  2. 2番目の「index in every folder」メソッドを使用するときに発生する可能性のあるデメリットや問題はありますか?
  3. 上記のウェブサイトを構築する2つの方法のうち、どちらがyouを好むでしょうか?
8
Jeyekomon

index.htmlまたはhome.htmlまたはその派生物を使用する理由は、ウェブサーバーソフトウェアitselfが実際にそれを探して提供するためです。例えば:

これは無効です:(www-directory)

/var/www/
|_blog.html
|_blog/
  |_math.html
  |_page2.html
  |_page3.html
  |_(...)

実際、これはフォルダーとファイルをリストするページとして提供されます。 (あなたが望むものではありません)。この構造を試すことができますが、blog.htmlの横にindex.htmlファイルを作成することもできます。 http://www.site.com/blog.htmlを指定しない限り、blog.htmlに配信されないことに注意してください)これが、http://www.google.com/を指定せずにhttp://www.google.com/index.htmlがページを表示する理由です。

これは有効です:

/var/www/
|_index.html (renamed blog.html to index.html)
|_blog/
  |_math.html
  |_page2.html
  |_page3.html
  |_(...)

これにより、blog.htmlファイルがホームページとして提供されます。 (そのディレクトリ内のすべてのフォルダ/ファイルをリストしない)

Webサーバーソフトウェアには、(構成内に)フォルダーのホームページまたはメインページとして機能する特殊なファイル名のリストがあります。 (私の経験では、index.htmlはindex.phpよりも優先されるため、フォルダー内にindex.htmlindex.phpがある場合、index.htmlは一般に表示されます)もちろん、これらはすべて変更でき、blog.htmlを設定することもできます「インデックス」として認識されます。

コメントへの対応:

「このトリックは、私のブログのアドレスをwww.xxx.com/blog.htmlからwww.xxx.com/blog/に変更します。」

これは、blog.htmlを完全に/blog/に移動し、index.htmlに名前を変更することで実行できます。

新しい構造は次のようになります。

/var/www/
|_blog/
  |_index.html (renamed from blog.html)
  |_math.html
  |_page2.html
  |_page3.html
  |_(...)

これにより、http://www.site.com/blog/が正しく機能し、index.htmlに名前を変更したblog.htmlの内容が表示されます。これにより、ソフトウェアがディレクトリのインデックスとして設定できるようになります/blog/

また、index.htmlファイルをサイトのルートhttp://www.site.com/(index.html)に配置して、/blog/やその他の任意のものへのリンクを作成することもできます。

短い文で具体的に質問に答える:

  1. index.htmlファイルをすべてのサブフォルダーに配置することをお勧めしますか、それともルートフォルダーのみに配置することを意図していますか?

    はい、それは人々があなたのディレクトリにあるファイルを見ることを防ぐためです。 .htaccessを含むOptions -Indexesファイルでこれを防ぐことができます

  2. 2番目の「すべてのフォルダーのインデックス」メソッドを使用するときに発生する可能性のあるデメリットや問題はありますか?

    私が考えることができるものはありません。

  3. 上記のWebサイトを構築する2つの方法のうち、どちらを選びますか?

    通常、ルートにindex.htmlまたはindex.phpファイルがあり、カテゴリ(forumまたはnewsまたはloginなど)に基づいたサブフォルダーがあり、それらのそれぞれの中に何らかのインデックスがあります。

12
ionFish

Index.htmlの技術用語は、ApacheのディレクトリインデックスとIISのデフォルトドキュメントです。関心のある他のApacheディレクティブは Options ディレクティブです。ドキュメントに示されているように、Options Indexesが設定されている場合:

ディレクトリにマップするURLが要求され、そのディレクトリにDirectoryIndex(たとえば、index.html)がない場合、mod_autoindexはディレクトリのフォーマットされたリストを返します。

コンテンツ管理システムを使用していないWebサイトをセットアップする場合、ディレクトリごとに1つのコンテンツページを持つことをお勧めします。そのページは、ディレクトリのディレクトリインデックス(デフォルトドキュメント)です。サイト上のすべてのリンクはディレクトリにのみリンクし、末尾のスラッシュで終わります(例:http://example.com/blog/の代わりにhttp://example.com/blog/index.htmlまたは./blog/の代わりに./blog/index.html)。末尾のスラッシュは、一般に courtesy redirect と呼ばれるものを避けるために重要です。 (末尾のスラッシュが省略された場合、すべてが引き続き正しく解決されますが、HTTP要求の数、したがって帯域幅が増加します。)

上記の方法論に対する私の主な動機は2つあります。まず、Webサイトで使用されている技術の切り替えを容易にします。たとえば、リンクや検索エンジンのリストを壊すことなく、index.htmlからindex.phpにページを変更できます。第二に、コンテンツページのファイル拡張子は「ノイズ」です。 URLからファイル拡張子を削除すると、URLが短くなり、できれば読みやすくなります。

他のファイルタイプに関して:

  • すべてのCSSファイルは、Webサイトのルートのcssディレクトリにあります。
  • すべての画像ファイルは、Webサイトのルートにある画像ディレクトリまたはそのサブディレクトリにあります。
  • JavaScriptファイルはすべて、Webサイトのルートにあるスクリプトディレクトリにあります。
  • すべてのフラッシュおよびその他のムービーファイルは、Webサイトのルートにあるビデオディレクトリまたはそのサブディレクトリにあります。

Apacheサーバーでは、上記のディレクトリに対してOptions Indexesを無効にします。 ApacheサーバーとIISサーバーの両方で、上記のディレクトリのディレクトリインデックス(デフォルトドキュメント)を指定しません。したがって、ディレクトリのいずれかに対する要求は、HTTP 403エラーになります。

6
Ryan Prechel