Właściwy sposób korzystania z index.html

9

Mam sporo problemów, o których chciałbym usłyszeć twoją opinię, więc mam nadzieję, że uda mi się to wystarczająco dobrze wyjaśnić. Powinienem również zauważyć, że jestem początkującym wyposażonym tylko w znajomość HTML i CSS, więc chociaż jestem prawie pewien, że istnieje proste rozwiązanie wykorzystujące potężne PHP, to mi nie pomoże .

Załóżmy, że mam swój osobisty blog na adres example.com/blog.htmli tam są linki do kilku podrzędnych blogach example.com/blog/math.html, example.com/blog/coding.htmlitd. Tak więc mój główny folder zawiera blog.htmli blogfolderu, blogsam folder zawiera pliki math.htmli coding.html.

Przede wszystkim dowiedziałem się (od Google Webmasters Tools ), że dla celów SEO i celów estetycznych dobrze jest ujednolicić example.com.comi example.com/index.htmldodać _rel="canonical"_atrybut do źródła index.html. Używając kilku innych sztuczek (takich jak linkowanie do ../i ./) pozbyłem się brzydkiego index.htmlpojawiania się na moich adresach internetowych.

A teraz zastanawiam się, czy tej sztuczki można użyć nie tylko w folderze głównym, ale w jakimkolwiek folderze? To znaczy, chciałbym przenieść blog.htmldo blogfolderu, zmienić go do pola index.htmli dodać rel="canonical"do unifikacji example.com/blog/index.htmlz example.com/blog/.
Ta sztuczka zmieniłaby adres mojego bloga example.com/blog.htmlna example.com/blog/.

Nie skończony! Mam również problemy z robotem Google indeksującym moje foldery. Więc kiedy piszę site:example.com/w wyszukiwarce Google, link do mojego folderu example.com/blog/z surowymi plikami, ikonami itp. Pojawia się wśród innych wyników. Są też inne sposoby, aby to naprawić, ale IMHO zmiana wspomniana powyżej również załatwi sprawę - index.html w folderze blogu uniemożliwiłby użytkownikowi przeglądanie rzeczywistej surowej zawartości tego folderu, pojawiłby się tylko odpowiedni link example.com/blog/w wyszukiwarce Google i (mam nadzieję, że) _rel="canonical"_sprawi, że drugi niechciany link example.com/blog/index.htmlnie pojawi się w wynikach wyszukiwania.

Więc moje pytania to:

  1. Czy dobrą praktyką jest posiadanie index.htmlpliku w każdym podfolderze, czy też jest przeznaczony tylko do folderu głównego?
  2. Czy są jakieś wady lub problemy, które mogą wystąpić podczas korzystania z drugiej metody „ indeksowania w każdym folderze ”?
  3. Który z dwóch sposobów strukturyzacji strona opisanych powyżej, ty preferujesz?
Jeyekomon
źródło
Dla mojego wyjaśnienia, czy wyszukiwarki widzą site.com/blog i site.com/blog/index.html jako 2 odrębne pliki? Jeśli używane są linki z obydwoma adresami URL, czy istnieje szansa, że ​​dzielisz uprawnienia do linków / strony na 2 lokalizacje?
O ile mi wiadomo, wyszukiwarki (przynajmniej Google) postrzegają je jako dwa odrębne pliki. Ponieważ faktycznie mogą być różne - dwa łącza mogą różnić się tylko jednym ukośnikiem. (Przeczytaj więcej tutaj .) I tak, jeśli używasz dwóch różnych linków do jednej strony, cała ranga strony jest podzielona między te dwa linki, a twoja strona faktycznie traci połowę swojej pozycji. Dlatego sugeruję wspomnianą kanonizację linków, aby zapobiec tym wyciekom.
Jeyekomon

Odpowiedzi:

13

Powodem używamy index.htmllub home.htmllub derivitives tego, jest fakt, że oprogramowanie serwera WWW Sam rzeczywiście wygląda na to, że i służy. Na przykład:

To jest NIEPRAWIDŁOWE: (katalog www)

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

Będzie to faktycznie służyć jako strona z listą folderów i plików. (Nie to, czego chcesz). Możesz wypróbować tę strukturę, ale także utworzyć plik index.html obok blog.html. Zauważ, że nie będzie wyświetlał blog.html, chyba że określisz http://www.site.com/blog.html) Dlatego http://www.google.com/wyświetla stronę bez konieczności podawaniahttp://www.google.com/index.html

Jest to WAŻNE:

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

Będzie to służyć jako blog.htmlplik STRONA GŁÓWNA. (Nie wyświetla wszystkich folderów / plików w tym katalogu)

Oprogramowanie serwera WWW ma (w konfiguracji) wyspecjalizowaną listę nazw plików, które będą służyć jako strona główna lub strona główna folderu. (Z mojego doświadczenia wynika , że index.htmlma pierwszeństwo przed index.php, więc jeśli masz index.htmli index.phpw folderze, index.html jest tym, co zobaczy publiczność) Oczywiście, że wszystko to można zmienić, a nawet możesz ustawić, blog.htmlaby był rozpoznawany jako "indeks".

Adresowanie komentarza:

„Ta sztuczka zmieniłaby adres mojego bloga z www.xxx.com/blog.html na www.xxx.com/blog/.”

Można to zrobić, przechodząc blog.htmlcałkowicie do /blog/i zmieniając jego nazwę na index.html.

Twoja nowa struktura to:

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

Powinno to poprawnie służyć http://www.site.com/blog/do wyświetlania zawartości twojego blog.html, którego nazwę zmieniliśmy, aby index.htmloprogramowanie mogło ustawić go jako indeks katalogu/blog/

Teraz możesz również umieszczać index.htmlpliki w katalogu głównym swojej witryny i umieszczać w nich pliki, http://www.site.com/(index.html)aby uzyskać linki /blog/i cokolwiek innego.

W szczególności odpowiadając na pytania w krótkich wypowiedziach:

  1. Czy dobrą praktyką jest posiadanie pliku index.html w każdym podfolderze, czy też jest przeznaczony tylko do folderu głównego?

    Tak, ponieważ uniemożliwia ludziom sprawdzenie, jakie pliki znajdują się w twoich katalogach. Można temu zapobiec za pomocą .htaccesspliku zawierającegoOptions -Indexes

  2. Czy są jakieś wady lub problemy, które mogą wystąpić podczas korzystania z drugiej metody „indeksowania w każdym folderze”?

    Brak, o którym mogę myśleć.

  3. Który z dwóch opisanych powyżej sposobów strukturyzowania strony internetowej wolisz?

    Zwykle mam plik index.htmllub index.phpplik w katalogu głównym, podfoldery oparte na kategorii (takie jak forumlub newslub loginitp.), A następnie jakiś indeks wewnątrz każdego z nich.

ionFish
źródło
Dziękuję za tak kompleksową odpowiedź! Ten publiczny dostęp do moich folderów i fakt, że są one indeksowane przez Google, denerwuje mnie, więc teraz, gdy wiem, że nie ma problemu z trikiem „indeksuj w każdym folderze”, w ten sposób zmienię swoją witrynę. Mam tylko nadzieję, że sztuczka rel = "canonical" zadziała i wszystkie te indeksy nie pojawią się w wyszukiwaniu google ...: D
Jeyekomon
6

Termin techniczny dla index.html to Indeks katalogów dla Apache i Dokument domyślny dla IIS. Inną interesującą dyrektywą Apache jest dyrektywa opcji . Jak wskazano w dokumentacji, kiedy Options Indexesjest ustawiony:

Jeśli żądany jest adres URL, który jest odwzorowany na katalog i nie ma w nim katalogu DirectoryIndex (np. Index.html), wówczas mod_autoindex zwróci sformatowaną listę katalogu.

Gdy konfiguruję witrynę internetową, która nie korzysta z systemu zarządzania treścią, preferuję konfigurację jednej strony z treścią na katalog. Ta strona jest indeksem katalogu (dokument domyślny) dla katalogu. Wszystkie linki w witrynie prowadzą tylko do katalogu i kończą się ukośnikiem (np. http://example.com/blog/Zamiast http://example.com/blog/index.htmllub ./blog/zamiast ./blog/index.html). Końcowy ukośnik jest ważny, aby uniknąć tego, co jest powszechnie nazywane przekierowaniem grzecznościowym . (Jeśli ukośnik końcowy zostanie pominięty, wszystko nadal jest rozwiązywane poprawnie, ale liczba żądań HTTP i tym samym wzrost przepustowości).

Moja podstawowa motywacja dla powyższej metodologii jest dwojaka. Po pierwsze, ułatwia zmianę technologii używanej na stronie. Na przykład mogę zmienić stronę z index.html na index.php bez zerwania linków lub list wyszukiwarek. Po drugie, rozszerzenie pliku strony treści to „szum”; usunięcie rozszerzenia pliku z adresu URL skutkuje krótszymi i, miejmy nadzieję, bardziej czytelnymi adresami URL.

Jeśli chodzi o inne typy plików:

  • Wszystkie pliki CSS znajdują się w katalogu css w katalogu głównym witryny.
  • Wszystkie pliki obrazów znajdują się w katalogu obrazów lub jego podkatalogu w katalogu głównym witryny.
  • Wszystkie pliki JavaScript znajdują się w katalogu skryptów w katalogu głównym witryny.
  • Wszystkie pliki flash i inne pliki filmowe znajdują się w katalogu wideo lub jego podkatalogu w katalogu głównym witryny.

Na serwerze Apache wyłączam Options Indexeswyżej wymienione katalogi. Na obu serwerach Apache i IIS nie określam indeksu katalogu (dokument domyślny) dla wyżej wymienionych katalogów. Dlatego żądanie dowolnego z katalogów powoduje błąd HTTP 403.

Ryan Prechel
źródło
Ze względu na dwa ograniczenia limitu linków nie mogłem dołączyć do mojej odpowiedzi linków do indeksu katalogu i dokumentu domyślnego , więc oto one.
Ryan Prechel