Правильный способ использования index.html

9

У меня довольно много вопросов, о которых я хотел бы услышать ваше мнение, поэтому я надеюсь, что мне удастся объяснить это достаточно хорошо. Следует также отметить, что я новичок, обладающий только знаниями HTML и CSS, поэтому, хотя я почти уверен, что есть простое решение с использованием мощного PHP, оно мне не поможет .

Допустим, у меня есть личный блог по этому адресу, example.com/blog.htmlи есть ссылки на несколько блогов example.com/blog/math.htmlи example.com/blog/coding.htmlт. Д. Итак, моя корневая папка содержит blog.htmlи blogпапку, сама blogпапка содержит файлы math.htmlи coding.html.

Прежде всего, я узнал (из Инструментов Google для веб-мастеров ), что для SEO и в эстетических целях хорошо объединиться example.com.comи example.com/index.htmlдобавить _rel="canonical"_атрибут в источник index.html. Используя несколько других приемов (например, ссылки на ../и ./), я избавился от уродливого index.htmlпоявления в моих веб-адресах.

И теперь мне интересно, можно ли использовать этот трюк не только для корневой папки, но и для любой папки? Я имею в виду, я бы переместил мой blog.htmlв blogпапку, переименовал его в index.htmlи добавил, rel="canonical"чтобы объединить example.com/blog/index.htmlс example.com/blog/.
Этот трюк изменит адрес моего блога с example.com/blog.htmlна example.com/blog/.

Не законченный! У меня также возникают проблемы с индексацией моих папок роботом Google. Поэтому, когда я site:example.com/печатаю в поиске Google, example.com/blog/среди других результатов появляется ссылка на мою папку с необработанными файлами, значками и т. Д. Я предполагаю, что есть и другие способы, как это исправить, но ИМХО упомянутое выше изменение тоже помогло бы - index.html в папке блога не позволил бы пользователю просматривать фактическое необработанное содержимое этой папки. Правильная ссылка example.com/blog/в поиске Google и (я надеюсь, что) _rel="canonical"_сделают вторую, нежелательную ссылку example.com/blog/index.htmlне появляться в результатах поиска.

Итак, мои вопросы:

  1. Полезно ли иметь index.htmlфайл в каждой подпапке или он должен быть только в корневой папке?
  2. Есть ли какие-либо недостатки или проблемы, которые могут возникнуть при использовании второго метода « индексировать в каждой папке »?
  3. Какой из двух способов структурирования веб - сайт , описанных выше , были бы вы предпочли?
Jeyekomon
источник
Для моего разъяснения, видят ли поисковые системы site.com/blog и site.com/blog/index.html как два отдельных файла? Если используются ссылки с обоими URL-адресами, есть ли вероятность, что вы разделите ссылочный сок / авторитет страницы между двумя местоположениями?
Насколько я знаю, поисковые системы (по крайней мере, Google) видят их как два отдельных файла. Потому что они на самом деле могут быть разными - две ссылки могут отличаться только одним слешем. (Подробнее читайте здесь .) И да, если вы используете две разные ссылки на одну страницу, весь ранг страницы разделяется между этими двумя ссылками, и ваша страница фактически теряет половину своего ранга. Вот почему я предлагаю упомянутую ссылку канонизации, чтобы предотвратить эти утечки.
Jeyekomon

Ответы:

13

Причина , почему мы используем index.htmlили home.htmlили derivitives их, потому , что веб - сервер программное обеспечение само по себе выглядит на самом деле для этого и служит ему. Например:

Это НЕВЕРНО: (www-каталог)

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

Фактически это будет служить страницей со списком папок и файлов. (Не то, что вы хотите). Вы можете попробовать эту структуру, но также сделать файл index.html рядом с blog.html. Обратите внимание, что он не будет обслуживать blog.html, если вы не укажете http://www.site.com/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файлом в качестве главной страницы. (Не перечислять все папки / файлы в этом каталоге)

Программное обеспечение веб-сервера имеет (в конфигурации) специальный список имен файлов, которые будут использоваться в качестве домашней страницы или главной страницы папки. (По моему опыту, index.htmlимеет приоритет над index.php, поэтому, если у вас есть index.htmlи index.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/показывать содержимое вашего blog.html, который мы переименовали, чтобы index.htmlпрограмма могла установить его в качестве индекса вашего каталога/blog/

Вы также можете свободно помещать и помещать index.htmlфайлы в корневой каталог своего сайта, http://www.site.com/(index.html)чтобы иметь ссылки /blog/и все остальное, что вы пожелаете.

Конкретно отвечая на ваши вопросы в коротких высказываниях:

  1. Полезно ли иметь файл index.html в каждой подпапке или он должен находиться только в корневой папке?

    Да, потому что это мешает людям видеть, какие файлы находятся в ваших каталогах. Вы можете предотвратить это с помощью .htaccessфайла, содержащегоOptions -Indexes

  2. Есть ли какие-либо недостатки или проблемы, которые могут возникнуть при использовании второго метода «индексировать в каждой папке»?

    Ни о чем я не могу думать.

  3. Какой из двух описанных выше способов структурирования веб-сайта вы бы предпочли?

    У меня обычно есть index.htmlили index.phpфайл в корне, подпапки, основанные на категории (например, forumили newsили loginи т. Д.), И затем какой-то индекс внутри каждого из них.

ionFish
источник
Спасибо за такой исчерпывающий ответ! Этот общедоступный доступ к моим папкам и тот факт, что они индексируются Google, очень злит меня, так что теперь, когда я знаю, что нет проблем с трюком «индексировать в каждой папке», я изменю свой сайт таким образом. Я просто надеюсь, что трюк rel = "canonical" сработает, и все эти индексы не появятся в поиске Google ...: D
Jeyekomon
6

Технический термин для index.html - индекс каталога для Apache и документ по умолчанию для IIS. Другая интересная директива Apache - это директива Options . Как указано в документации, когда Options Indexesустановлено:

Если запрашивается URL, который отображается в каталог, и в этом каталоге нет DirectoryIndex (например, index.html), то mod_autoindex вернет отформатированный список каталога.

Когда я настраиваю веб-сайт, который не использует систему управления контентом, я предпочитаю иметь одну страницу контента на каталог. Эта страница является индексом каталога (документ по умолчанию) для каталога. Все ссылки на сайте только ссылаются на каталог и заканчиваются косой чертой (например, http://example.com/blog/вместо http://example.com/blog/index.htmlили ./blog/вместо ./blog/index.html). Конечная косая черта важна, чтобы избежать того, что обычно называют любезным перенаправлением . (Если завершающий слеш опущен, все по-прежнему разрешается правильно, но количество HTTP-запросов и, следовательно, пропускная способность увеличиваются.)

Моя основная мотивация вышеуказанной методологии двояка. Во-первых, это облегчает переключение технологий, используемых на сайте. Например, я могу изменить страницу с index.html на index.php, не нарушая никаких ссылок или списков поисковых систем. Во-вторых, расширение файла страницы содержимого - «шум»; удаление расширения файла из URL приводит к более коротким и, надеюсь, более читаемым URL.

Что касается других типов файлов:

  • Все CSS-файлы находятся в каталоге css в корне сайта.
  • Все файлы изображений находятся в каталоге изображений или его подкаталоге в корне веб-сайта.
  • Все файлы JavaScript находятся в каталоге скриптов в корне сайта.
  • Все флэш-файлы и другие файлы фильмов находятся в каталоге видео или его подкаталоге в корне веб-сайта.

На сервере Apache я отключаю Options Indexesдля вышеупомянутых каталогов. На серверах Apache и IIS я не указываю индекс каталога (документ по умолчанию) для вышеупомянутых каталогов. Таким образом, запрос любого из каталогов приводит к ошибке HTTP 403.

Райан Пречел
источник
Из-за ограничения по двум ссылкам я не мог включить ссылки на индекс каталога и документ по умолчанию в свой ответ, так что вот они.
Райан Пречел