Как настроить RewriteRule для коротких ссылок в .htaccess
Создание сервиса коротких ссылок - популярная задача для веб-разработчиков и владельцев сайтов. Часто для этого используют Apache .htaccess и модуль mod_rewrite. В этой статье мы разберём конкретный пример: преобразование URL вида g0o.ru/url.php?site=uLczL в короткий вариант g0o.ru/uLczL, а также рассмотрим типичные ошибки и их решения.
Основы mod_rewrite для сокращения ссылок
Для работы с короткими ссылками необходимо включить модуль RewriteEngine и задать правило, которое будет перенаправлять запросы вида /uLczL на скрипт-обработчик. В вашем случае скрипт - url.php с параметром site.
Пример базового RewriteRule
Добавьте следующий код в файл .htaccess, расположенный в корне сайта:
RewriteEngine On
RewriteRule ^([a-zA-Z0-9]+)$ url.php?site=$1 [L,QSA]Это правило перехватывает любую строку из латинских букв и цифр (например, uLczL) и передаёт её в url.php как параметр site. Флаги [L] (Last) останавливают обработку, а [QSA] (Query String Append) сохраняют дополнительные параметры, если они есть.
Почему правило может не работать
Если решение из найденного поста не помогло, проверьте несколько критичных моментов:
- Включён ли модуль rewrite? Убедитесь, что на сервере Apache активирован
mod_rewrite. В большинстве хостингов он включён, но иногда требуется запрос в техподдержку. - Путь до .htaccess. Файл должен находиться в корне домена (папка
public_htmlилиwww). - Разрешение на перезапись. Проверьте, что в
.htaccessнет строкиRewriteOptions Inheritили конфликтующих правил. Также убедитесь, что директиваAllowOverride Allзадана в конфигурации Apache (обычно настраивается хостингом).
Дополнительная настройка: обработка ошибок и редиректы
Чтобы сервис работал надёжно, добавьте обработку случая, когда короткая ссылка не найдена. Например, создайте страницу 404.php и настройте правило:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9]+)$ url.php?site=$1 [L,QSA]Эти условия (RewriteCond) проверяют, что запрошенный файл или директория не существуют физически. Тогда правило сработает только для несуществующих путей, что предотвратит конфликты с реальными файлами.
Безопасность коротких ссылок
При реализации сервиса не забывайте о безопасности. Параметр site может быть использован для атак, если он напрямую подставляется в SQL-запрос или файловую систему. Обязательно фильтруйте входные данные: проверяйте длину, допустимые символы и используйте подготовленные запросы в PHP.
Заключение
Настройка RewriteRule для коротких ссылок - простая, но важная задача. Используя приведённые примеры и советы, вы сможете быстро реализовать сокращение URL на своём домене. Главное - проверить включение модуля, корректность пути и добавить условия для исключения ошибок.