Как настроить 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 на своём домене. Главное - проверить включение модуля, корректность пути и добавить условия для исключения ошибок.

    Часто задаваемые вопросы