Відповіді:
Існує кілька причин для видалення розширень з URL-адрес:
Майте на увазі , що багато сайтів створюються з допомогою системи управління контентом (CMS) , що б зробити URL - адреси виглядати наступним чином : /index.php?page=this-is-the-widget-page
. Це особливо некрасиво і має набагато більше суворості, ніж просто розширення. Переписування для видалення index.php?page=
робить це значно краще.
Розширення в Інтернеті не потрібні, оскільки сервери надсилають тип документа у вигляді заголовка. Веб-сторінки подаються як text/html
, зображення як image/png
або image/jpeg
. Це дозволяє веб-переглядачам знати, як візуалізувати вміст, не використовуючи розширення, щоб зрозуміти, що URL-адреса містить текст, HTML, PDF або зображення (для отримання додаткової інформації див тип статті Інтернет-медіа у Вікіпедії ).
Деякі веб-майстри вирішили використовувати розширення для своїх URL-адрес, яке відповідає цьому типу вмісту. Отже, будь-який text/html
документ матиме .html
розширення, а будь-який image/png
документ має .png
розширення. Це може допомогти, коли URL-адреси зберігаються у файловій системі, де втрачаються метадані про тип їх вмісту. У більшості файлових систем програма, яка відкриває файл, вибирається розширенням. Тож навіть якщо сторінку обслуговує PHP, деякі веб-майстри видаляють .php
розширення, а деякі замінюють його .html
.
Існує також питання щодо того, чи можуть URL-адреси краще закінчуватись у косому сліші ( /
), коли у них немає розширення, яке має багато обговорень щодо переповнення стека.
На всіх веб-серверах є один або кілька "файлів за замовчуванням". Це файл, який відображатиметься кожного разу, коли відвідувач перейде до URL-адреси, яка закінчується косою рисою /
, тобто папкою.
Якщо на вашому веб-сервері є ім'я файлу за замовчуванням index.php
і відвідувач переходить до нього www.example.com/pagename/
, вони фактично отримують доступ www.example.com/pagename/index.php
.
Якщо немає трейлінгу /
, веб-сервер, ймовірно, просто переписує URL, щоб видалити його, оскільки це не потрібно. Цей сайт, власне, і робить це.
Це тип «крутої» схеми URI, на який я прагну на своєму особистому веб-сайті.
Особисто причиною того, що я почав це робити (і, мабуть, ще багато веб-дизайнерів / розробників теж!), Було після прочитання статті "Класні URI не змінюються" - цей документ написав батько-засновник Всесвітньої мережі Інтернет Тім Бернерс -Lee.
У відомій статті Тіма Бернерса-Лі він в основному констатує ті самі причини, що і Стівен Остерміллер у своїй чудовій відповіді на це питання .
Щоб дати більш конкретну відповідь на ваше головне запитання "Чому розширення приховані в URL-адресах?" Ну, я б сказав, що основні причини для мене:
1. Для підтвердження майбутнього URI:
Наприклад, це могло здатися гарною ідеєю в той час використовувати URI на зразок:
http://www.example.com/page.pl
де .pl
відбувається екзекція файлу для сценарію Perl. Тим НЕ менше, thesedays, більшість веб - розробники використовують ASP.NET або PHP для серверної-скриптів, тому напередодні , хоча сьогодні ,
http://www.example.com/page.php
звучить як найкраща ідея, в кінці кінців PHP і ASP / ASP.net стануть старомодними. Тому кращою ідеєю є просто видалити розширення взагалі.
2. Читання та пам'ять:
Набагато простіше “крутий” URI передавати людям усно, на папері (наприклад, оголошення, візитні картки тощо), не кажучи вже про просте запам'ятовування.
3. "Hackability" *
Хоча я б сказав, що переважна більшість користувачів у наші дні, ймовірно, проходить пошукову систему для всього - я навіть бачив людей, які зайшли в адресний рядок і вводять www.google.com
, а потім використовують Google для буквального введення www.ebay.com
! Але я думаю, що якщо у мене є веб-сайт, заснований на мультимедіа, URI http://www.example.com/video
натякає, що музичний розділ можна знайти під URI http://www.example.com/audio
тощо. (Я до сих пір використовую адресний рядок, щоб перейти на веб-сайти - я досить “старий” про таке!)
* (О! "Hackability» - робить це слово навіть існують?! Ну, це робить прямо зараз !) :-)
4. ** Естетика: щоб вони виглядали красивішими! (Звинувачуйте мій OCD!)
Однак я помітив, читаючи на різних веб-сайтах, пов'язаних з SEO, що багато веб-серверів фактично додають розширення файлів до динамічних URI, наприклад:
Фактичним URI може бути:
http://www.example.com/article
Однак веб-майстер виконає перезапис, щоб зробити URI "вигляд" статичним, наприклад:
http://www.example.com/article.html
Логіка цього полягає в тому, що в основному пошукова система присвоює більш високий рейтинг статичним сторінкам (які, мабуть, рідше змінюються). (Хоча я не зовсім експерт у галузі SEO, я особисто не замислююся над цією ідеєю - я здогадуюсь, що з таким розумом, що стоїть за алгоритмами Google і Бінга, це знадобиться трохи більше, ніж підроблене розширення файлу, щоб con ваш шлях ви перебуваєте в положенні SERP полюс!)
Для отримання додаткової інформації про іменування URI, рекомендую прочитати наступні статті:
Тім Бернерс-Лі:
Поради щодо якості Q3:
Брайан Келлі (UK Web Focus / UKOLN - Університет Бат):
Сподіваюся, це допомагає!
Я повністю згоден на всі відповіді, викладені вище. Просто додамо, що одна з причин, чому розширення приховані в URL-адресі, - це безпека. Простіше кажучи, якщо ви не відкриєте розширення в URL-адресі, важко розібратися в технології, на якій створено додаток. Тож скажімо, що сторінка, зроблена в PHP, і розширення не приховано, хакер може потенційно визначити вразливості PHP і використовувати її для виконання деякої шкідливої діяльності.
Ви ховаєте розширення сторінки чи ні, люди все ще можуть знати, яку технологію ви використовували. Використовуючи cURL, неможливо отримати вашу технологію, отримавши інформацію заголовка.
curl -I -L rembatvideo.ga
Тоді ви побачите щось на зразок вашої технології, запиту кешу, з'єднання тощо.
Цілком погоджуюсь, як пояснює "Стівен Остерміллер", але я хотів би зазначити хитрість, що полягає в тому, щоб приховати розширення URL-адрес. І для цього вам потрібно використовувати правило перезапису .htaccess , ось сценарій, який допоможе вам:
Перенаправлення зовнішніх .php
запитів на URL без розширення
RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(.+)\.php$ http://example.com/folder/$1 [R=301,L]