Dlaczego rozszerzenia są często ukryte w adresach URL?

20

Wiele razy widzę, że są ukryte rozszerzenia URL (np .html, .php), ale nie wszystkie strony internetowe to zrobić.

Dlaczego webmasterzy ukrywają to rozszerzenie? Czy to dla bezpieczeństwa, aby adres URL wyglądał na czystszy, czy w jakimś innym celu?

Nieznany
źródło

Odpowiedzi:

29

Istnieje kilka powodów, aby usunąć rozszerzenia z adresów URL:

  • Aby adresy URL wyglądały na czystsze
  • Aby ułatwić wpisywanie adresów URL
  • Aby ułatwić zapamiętanie adresów URL
  • Aby adresy URL były bardziej przyjazne dla słowa kluczowego SEO
  • Aby móc zmieniać technologie - jeśli kiedykolwiek chcesz przenieść swoją witrynę z jednej technologii na drugą, najłatwiej to zrobić bez wiedzy użytkowników, nawet jeśli nie ma rozszerzeń adresów URL

Należy pamiętać, że wiele witryn są generowane przez system zarządzania treścią (CMS), która stałaby URL wyglądać tak: /index.php?page=this-is-the-widget-page. Jest to szczególnie brzydkie i ma znacznie więcej cruft niż tylko rozszerzenie. Przepisywanie w celu usunięcia index.php?page=sprawia, że ​​jest znacznie lepsze.

Rozszerzenia nie są potrzebne w Internecie, ponieważ serwery wysyłają typ dokumentu jako nagłówek. Strony internetowe są wyświetlane jako text/htmlobrazy jako image/pnglub image/jpeg. Dzięki temu przeglądarki wiedzą, jak renderować zawartość bez użycia rozszerzenia, aby dowiedzieć się, że adres URL zawiera tekst, HTML, PDF lub obraz (więcej informacji można znaleźć w artykule Wikipedii rodzaj mediów internetowych ).

Niektórzy webmasterzy wybierają rozszerzenie adresów URL pasujące do tego typu treści. Tak więc każdy text/htmldokument miałby .htmlrozszerzenie, a każdy image/pngdokument miałby .pngrozszerzenie. Może to pomóc, gdy adresy URL są zapisywane w systemie plików, w którym tracone są metadane dotyczące ich typu zawartości. W większości systemów plików program, który otwiera plik, jest wybierany przez rozszerzenie. Więc nawet jeśli strona jest obsługiwana przez PHP, niektórzy webmasterzy usuwają .phprozszerzenie, a niektórzy go zastępują .html.

Pojawia się również pytanie, czy adresy URL mogą lepiej kończyć się końcowym ukośnikiem ( /), gdy nie mają rozszerzenia, które ma wiele dyskusji na temat przepełnienia stosu.

Stephen Ostermiller
źródło
11
W niektórych ramach (np. MVC) adres URL nie identyfikuje pliku, więc nie ma rozszerzenia do ukrycia.
Henrik Ripa
6

Wszystkie serwery mają jeden lub więcej „plików domyślnych”. Jest to plik, który będzie wyświetlany za każdym razem, gdy odwiedzający przejdzie pod adres URL zakończony ukośnikiem /, tj. Folder.

Jeśli domyślna nazwa pliku na twoim serwerze internetowym to index.phpi odwiedzający ją odwiedza www.example.com/pagename/, to faktycznie uzyskuje dostęp www.example.com/pagename/index.php.

Jeśli nie ma /końca, serwer internetowy prawdopodobnie po prostu przepisuje adres URL, aby go usunąć, ponieważ nie jest to konieczne. Ta strona faktycznie to robi.

Athoxx
źródło
2
Nie jestem pewien, czy pytanie brzmiało „jak”, ale „dlaczego”. Patrik, twoja odpowiedź jest całkowicie poprawna, jeśli chodzi o sposób. Stephen jednak odpowiedział „dlaczego”
Brandt Solovij
4

Jest to rodzaj „fajnego” schematu URI, do którego dążę na mojej własnej stronie internetowej.

Osobiście powodem, dla którego zacząłem to robić (i prawdopodobnie także wielu innych projektantów / programistów!) Było po przeczytaniu artykułu „Fajne identyfikatory URI się nie zmieniają” - ten dokument został napisany przez założyciela World Wide Web, Tima Bernersa -Zawietrzny.

W słynnym artykule Tima Bernersa-Lee w zasadzie podaje te same powody, dla których Stephen Ostermiller ma doskonałą odpowiedź na to pytanie .

Aby udzielić bardziej szczegółowej odpowiedzi na twoje główne pytanie: „Dlaczego rozszerzenia są ukryte w adresach URL?” Cóż, powiedziałbym, że głównymi powodami są:

1. Aby zabezpieczyć identyfikator URI w przyszłości:

Na przykład, może wydawać się wtedy dobrym pomysłem użycie identyfikatora URI typu: http://www.example.com/page.pl gdzie .pljest rozszerzenie pliku dla skryptu Perl. Jednak thesedays większość developerzy użyciu ASP.NET czy PHP na backend-skryptów, więc Ewa chociaż dzisiaj , http://www.example.com/page.php brzmi jak lepszy pomysł, w końcu PHP i ASP / ASP.net będzie staromodny. Lepszym pomysłem jest więc całkowite usunięcie rozszerzenia.

2. Czytelność i zapamiętywanie:

Znacznie łatwiej jest przekazać „fajny” identyfikator URI ludziom w formie ustnej, na papierze (np. Reklamy, wizytówki itp.), Nie wspominając o łatwiejszym do zapamiętania.

3. „Hackability” *

Chociaż powiedziałbym, że ogromna większość użytkowników w dzisiejszych czasach prawdopodobnie przegląda wszystko - widziałem nawet ludzi, którzy przechodzili do paska adresu i pisali www.google.com, a następnie używali Google do literalnego wpisywania www.ebay.com! Myślę jednak, że jeśli mam witrynę internetową opartą na multimediach, identyfikator URI http://www.example.com/videowskazuje, że sekcja muzyki znajduje się pod identyfikatorem URI http://www.example.com/audioi tak dalej. (Nadal używam paska adresu, aby przechodzić do stron internetowych - jestem dość „oldschoolowy” w tego typu sprawach!)

* (! Oh „Hackability” - czy to słowo jeszcze istnieją ?! Cóż, nie teraz !) :-)

4. ** Estetyka: aby wyglądały ładniej! (Obwiniaj mój OCD!)

Zauważyłem jednak, czytając różne strony związane z SEO, że wiele webmaserów faktycznie dołącza rozszerzenia plików do dynamicznych URI, np .:

Rzeczywisty identyfikator URI może być: http://www.example.com/article

Jednak webmaster wykona przepisanie, aby URI „wyglądał” statycznie, na przykład: http://www.example.com/article.html

Logika tego polega na tym, że wyszukiwarka przypisuje wyższą pozycję stronom statycznym (które, jak się wydaje, rzadziej się zmieniają). (Chociaż nie jestem ekspertem od SEO, ja osobiście nie kupuję tego pomysłu - zgaduję, że mając do czynienia z algorytmami Google i Bing, zajmie to nieco więcej niż fałszywe rozszerzenie pliku oszukiwać na swojej pozycji do pole position SERP!)

Aby uzyskać więcej informacji na temat nazywania identyfikatorów URI, polecam przeczytanie następujących artykułów:

Tim Berners-Lee:

Wskazówki dotyczące kontroli jakości W3C:

Brian Kelly (UK Web Focus / UKOLN - University of Bath):

Mam nadzieję że to pomoże!

Jordan Clark
źródło
2

Całkowicie zgadzam się na wszystkie powyższe odpowiedzi. Wystarczy dodać, że jednym z powodów, dla których rozszerzenia są ukryte w adresie URL, jest bezpieczeństwo. Mówiąc prościej, jeśli nie ujawnisz rozszerzenia w adresie URL, nietrudno jest dowiedzieć się, na jakiej technologii została zbudowana aplikacja. Załóżmy więc, że strona jest wykonana w PHP, a rozszerzenie nie jest ukryte, wtedy haker może potencjalnie wykryć luki w zabezpieczeniach PHP i wykorzystać je do wykonania złośliwych działań.

Vishal Raj
źródło
Zgadzam się z twoim komentarzem, ale myślę, że użycie identyfikatorów URI do zaciemnienia technologii zaplecza jako środka bezpieczeństwa jest bezużyteczne. Na pierwszy rzut oka, to ukrywanie szczególnej stosowanej technologii. Niestety, jedynymi osobami, które „oszukają”, są użytkownicy końcowi; niektóre z nich (jeśli nie większość) nie mają pojęcia, jaki jest adres URL, nie mówiąc już o ASP / PHP / itp. Z braku lepszego sformułowania jesteś „głoszeniem chóru”
Jordan Clark,
1

Ukrywasz rozszerzenia stron, czy nie, ludzie nadal mogą wiedzieć, jakiej technologii użyłeś. Używając cURL, nie jest niemożliwe uzyskanie technologii przez pobranie informacji nagłówka.

curl -I -L rembatvideo.ga

Następnie zobaczysz coś takiego jak Twoja technologia, żądanie pamięci podręcznej, połączenie i inne.

Hans Isaa
źródło
0

Zgadzam się całkowicie, jak wyjaśniono w „Stephen Ostermiller”, ale chciałbym wspomnieć o sztuczce kryjącej za sobą rozszerzenie adresów URL. Aby to zrobić, musisz użyć reguły przepisywania .htaccess , oto skrypt, który ci pomoże:

Przekieruj zewnętrzne .phpżądania na adres URL bez rozszerzenia

RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(.+)\.php$ http://example.com/folder/$1 [R=301,L]
Rajesh Magar
źródło