Механизм перезаписи - это программный компонент, который выполняет перезапись в унифицированных указателях ресурсов , изменяя их внешний вид. Эта модификация называется перезаписью URL . Это способ реализации сопоставления URL-адресов или маршрутизации в веб-приложении . Механизм обычно является компонентом веб-сервера или инфраструктуры веб-приложения . Переписанные URL-адреса (иногда называемые короткими , красивыми или причудливыми URL-адресами , удобными для поисковых систем - URL-адреса SEF или ярлыки) используются для предоставления более коротких и релевантных ссылок на веб-страницы. Этот метод добавляет уровень абстракции между файлами, используемыми для создания веб-страницы, и URL-адресом, который предоставляется внешнему миру.
Применение
Веб-сайты с динамическим содержимым могут использовать URL-адреса, которые генерируют страницы с сервера с использованием параметров строки запроса . Они часто переписываются, чтобы напоминать URL-адреса статических страниц на сайте с иерархией подкаталогов . Например, URL-адрес вики- страницы может быть:
http://example.com/w/index.php?title=Page_title
но можно переписать как:
http://example.com/wiki/Page_title
У блога может быть URL-адрес, в котором указаны даты каждой записи:
http://www.example.com/Blog/Posts.php?Year=2006&Month=12&Day=19
Его можно изменить так:
http://www.example.com/Blog/2006/12/19/
который также позволяет пользователю изменить URL-адрес, чтобы увидеть все сообщения, доступные в декабре, просто удалив текст, кодирующий день «19», как если бы он перемещался «вверх» по каталогу:
http://www.example.com/Blog/2006/12/
Сайт может передавать специализированные термины из URL-адреса в свою поисковую систему в качестве поискового запроса. Это позволит пользователям выполнять поиск прямо из браузера. Например, URL-адрес, введенный в адресную строку браузера :
http://example.com/search термин
Буду urlencoded браузера , прежде чем он делает запрос HTTP . Сервер может переписать это так:
http://example.com/search.php?q=search%20term
Преимущества и недостатки
Использование перезаписи URL дает несколько преимуществ: [1]
- Ссылки более "чистые" и наглядные, что делает их "удобнее" как для пользователей, так и для поисковых систем .
- Они предотвращают нежелательные « встроенные ссылки », которые могут привести к потере полосы пропускания .
- Сайт может продолжать использовать те же URL-адреса, даже если базовая технология, используемая для их обслуживания, будет изменена (например, при переходе на новую систему ведения блогов ).
Однако могут быть и недостатки; если пользователь хочет изменить URL-адрес для получения новых данных, перезапись URL-адреса может затруднить построение пользовательских запросов из-за отсутствия именованных переменных. Например, может быть сложно определить дату в следующем формате:
http://www.example.com/Blog/06/04/02/
В этом случае исходная строка запроса была более полезной, поскольку переменные запроса указывали месяц и день:
http://www.example.com/Blog/Posts.php?Year=06&Month=04&Day=02
Веб-фреймворки
Многие веб-фреймворки включают перезапись URL либо напрямую, либо через модули расширения.
- HTTP-сервер Apache имеет функцию перезаписи URL, обеспечиваемую модулем mod_rewrite. [2]
- Переопределение URL-адресов доступно как расширение Microsoft IIS . [3]
- Ruby on Rails имеет встроенную функцию перезаписи URL-адресов через Routes. [4]
- Сервлет Jakarta имеет расширяемую перезапись URL-адресов с помощью OCPsoft URLRewriteFilter и Tuckey UrlRewriteFilter.
- Jakarta Server Faces упростил перезапись URL-адресов с помощью PrettyFaces: URLRewriteFilter.
- Django использует систему на основе регулярных выражений . Это не является строго переписыванием URL-адресов, поскольку нет сценария для «перезаписи» или даже структуры каталогов; но он обеспечивает полную гибкость перезаписи URL. [5]
- В Java Stripes Framework встроена функциональность, начиная с версии 1.5. [6]
- Многие фреймворки Perl, такие как Mojolicious и Catalyst , имеют эту функцию. [7]
- В CodeIgniter предусмотрена возможность перезаписи URL.
- lighttpd имеет модуль mod_rewrite. [8]
- В nginx есть модуль перезаписи. [9] [10] Например, возможно создание многосвязной страницы с несколькими переменными из URI, например / f101, n61, o56, d / ifconfig , где несколько отдельных частей, таких как f101, расширяются с помощью регулярных выражений в переменные для обозначения FreeBSD 10.1-RELEASE и так далее.
- HTTP-сервер Hiawatha имеет набор инструментов URL, который поддерживает перезапись URL. [11]
- HTTP-сервер Cherokee поддерживает регулярные выражения перезаписи и перенаправления URL-адресов.
С разработки программного обеспечения точки зрения, URL переписывания может помочь в код модуляризации и управления потоком , [12] , что делает его полезным свойством современных фреймворков.
Смотрите также
- Контроллер доставки приложений
- Менеджер трафика aiScaler
- .htaccess
- HTTP-сервер Apache
- Согласование содержания
- HTTP
- Информационный сервер в Интернете
- Постоянная ссылка
- Веб-сервер Zeus
Заметки
- ^ Многие из них применимы только к HTTP-серверам, поведение которых по умолчанию заключается в сопоставлении URL-адресов ссущностями файловой системы (т. Е. Файлами и каталогами); определенные среды, такие как многиеплатформы серверов приложений HTTP, делают это несущественным.
- ^ документация по mod_rewrite
- ^ Расширение перезаписи URL для Microsoft IIS
- ^ «Маршрутизация рельсов извне внутрь» . «Ruby on Rails . Проверено 25 апреля 2014 года .
- ^ Django URLconf
- ^ очистить URL-адреса в Stripes 1.5
- ^ Руководства - Mojolicious гид по галактике . Mojolicious. Проверено 8 сентября 2013.
- ^ Документы ModRewrite - Lighttpd - lighty labs . Redmine.lighttpd.net. Проверено 8 сентября 2013.
- ^ «ngx_http_rewrite_module - переписать» . nginx.org . Проверено 25 декабря 2014 .
- ^ Муренин, Константин А. (18 февраля 2013 г.). «Динамический веб-сайт, полностью написанный на nginx.conf? Представляем mdoc.su!» . [email protected] (список рассылки) . Проверено 24 декабря 2014 .
- ^ URL TOOLKIT, часть руководства по веб-серверу Hiawatha
- ^ «Чистый URL» . DocForge . Проверено 25 апреля 2014 года .
Внешние ссылки
- Apache mod_rewrite
- Apache mod_rewrite Полный список переменных и значений CGI для создания перезаписей.