Веб-страницы без расширения файла

Я вижу на этом веб-сайте, что URL-адрес http://stackoverflow.com/questions/ask. После этого расширение файла отсутствует, и если ask был папкой, а внутри нее, например, index.aspx, он выглядел бы как http://stackoverflow.com/questions/ask/.
Как они это делают? Как они заставляют расширение исчезнуть? Спасибо, Фантом


person Phantom    schedule 18.10.2014    source источник
comment
а что вы спрашиваете?   -  person LeleDumbo    schedule 18.10.2014
comment
Я спрашиваю, как они это делают?   -  person Phantom    schedule 18.10.2014
comment
возможный дубликат Как скрыть расширение .html с помощью Apache mod_rewrite   -  person easwee    schedule 19.10.2014


Ответы (2)


Как они это делают? Как они заставляют расширение исчезнуть?

Расширение не исчезает, но расширения просто нет. В совсем недавнем (скажем, 15 лет) мире веб-программирования веб-приложение больше не представляет собой набор реальных каталогов с реальными файлами. Веб-приложения теперь имеют множество различных архитектур и применяют множество шаблонов. Веб-сервер также может предоставлять такую ​​​​функцию с помощью расширения для перезаписи URL-адресов. Оба обычно также сочетаются.

Наиболее распространенный шаблон, реализующий это, — Front Controller. Идея в том, что ВСЕ запросы идут в единую точку входа. Затем эта точка входа может решить, какой код выполнить для генерирования выходных данных. В большинстве сред MVC URI после имени внешнего контроллера (обычно index.php) используется для определения того, какой класс контроллера и какой метод контроллера вызывать, хотя в наши дни они обычно настраиваются.

В примере http://stackoverflow.com/questions/ask возможна следующая схема:

  1. Веб-сервер переписывает URL-адрес на http://stackoverflow.com/index.php/questions/ask
  2. index.php в качестве внешнего контроллера, а затем проанализируйте сегменты URI после его имени, которое равно /questions/ask.
  3. Затем он создает экземпляр класса questions и вызывает его метод ask.
  4. Метод генерирует выходные данные, которые затем отправляются обратно в качестве ответа на запрос.
person LeleDumbo    schedule 18.10.2014
comment
Спасибо за ответ. Теперь я понял эту тему, спасибо! - person Phantom; 18.10.2014

Они используют так называемые правила перезаписи, возможно, в файле .htaccess в корневом каталоге сайта. Они добавили что-то подобное в свой файл .htaccess.

RewriteEngine On # Включить механизм перезаписи

RewriteRule ^ask/?$ questions.php?questionID={1} [NC,L]

person Patrick Kelly    schedule 18.10.2014
comment
Спасибо за ваш ответ. - person Phantom; 18.10.2014
comment
Можете ли вы объяснить, что говорит правило перезаписи? - person DavidG; 16.02.2018