Ответ
URL rewrite (перезапись URL) — это технология на стороне веб-сервера (например, Apache, Nginx) или приложения, которая преобразует входящий URL-запрос в другой внутренний URL перед его обработкой. Цель — сделать адреса более понятными для пользователей и поисковых систем (SEO).
Зачем это нужно?
- Человеко-понятные URL (ЧПУ): Преобразовать
example.com/product.php?id=123&cat=booksвexample.com/books/123-fantasy-novel. - SEO-оптимизация: Ключевые слова в URL положительно влияют на ранжирование.
- Сокрытие технологий: Скрытие реальных путей к файлам (
.php,.asp) и параметров. - Реструктуризация сайта: Перенаправление старых URL на новые без изменения кода приложения.
Пример настройки в Nginx:
location /products/ {
# Правило: /products/123 -> /product.php?id=123
rewrite ^/products/(d+)$ /product.php?id=$1 last;
}
Пример настройки в Apache (.htaccess):
RewriteEngine On
# Правило: /article/title-here -> /article.php?slug=title-here
RewriteRule ^article/([a-z0-9-]+)$ article.php?slug=$1 [L]
Важные нюансы:
- Производительность: Слишком сложные правила или их большое количество могут замедлить обработку запросов.
- Циклические перенаправления: Неправильные правила могут привести к бесконечным внутренним перезаписиям или редиректам.
- Тестирование: Требует тщательного тестирования, так как влияет на все входящие запросы.
Ответ 18+ 🔞
А, ну это про то, как из говна конфетку сделать, чтобы адрес в браузере выглядел красиво, а на сервере всё равно открывалась та же самая страница с вопросиками и амперсандами! Чистая магия, блядь, для глаз пользователя и этих… поисковиков.
Зачем это, спрашивается, нужно?
Ну смотри, был у тебя адрес типа example.com/product.php?id=123&cat=books. Выглядит, будто какой-то полупидор на коленке склепал. А после перезаписи будет example.com/books/123-fantasy-novel. Красота, ёпта! И люди понимают, и Яндекс с Гуглом довольны — ключевые слова прямо в адресе торчат. Да и технологию свою, типа .php, можно спрятать, чтобы не светить, хитрая жопа.
Как это выглядит в конфигах, например, в Nginx:
location /products/ {
# Правило: /products/123 -> /product.php?id=123
rewrite ^/products/(d+)$ /product.php?id=$1 last;
}
Видишь? Человек пришёл на /products/777, а сервер внутри себя, никого не спросив, подумал: «Ага, щас я ему покажу product.php, да ещё и id=777 подставлю». И показал! И все счастливы.
А вот так в Apache, в этом ихнем .htaccess:
RewriteEngine On
# Правило: /article/title-here -> /article.php?slug=title-here
RewriteRule ^article/([a-z0-9-]+)$ article.php?slug=$1 [L]
Тут та же фигня, только синтаксис другой. Включил движок, написал правило — и пошла писать губерния.
Но, блядь, есть нюансы, ёпта!
- Производительность: Если наворотить этих правил овердохуища, сервер начнёт тупить, как мудак после праздников. Каждому запросу теперь надо через все эти регулярки пройти.
- Циклические перенаправления: Вот тут самый пиздец может случиться. Напишешь криво правило — и сервер начнёт сам с собой переписываться до посинения, пока не накроется медным тазом с ошибкой. Бесконечный внутренний диалог, блядь.
- Тестирование: Без этого — никуда. Накосячишь с правилом — и весь сайт ляжет, либо половина страниц перестанет открываться. Надо тестить, как последнюю мартышлюшку, потому что влияет-то оно на ВСЕ запросы, сука!
Вот такая, блядь, нехитрая, но коварная магия. С виду — красота и порядок, а под капотом — регулярные выражения и тонны терпения, которого, ясное дело, ноль ебать.