Monitor404

Бесплатный инструмент

Генератор 301 редиректов для .htaccess и nginx

Вставьте список «старый адрес — новый адрес», получите готовые правила для Apache (.htaccess), nginx или PHP. Всё считается в браузере, данные никуда не отправляются.

3 правила
.htaccess в корне сайта
RewriteEngine On
RewriteRule ^old-page$ /new-page [R=301,L]
RewriteRule ^catalog/old-category/$ /catalog/new-category/ [R=301,L]
RewriteCond %{QUERY_STRING} ^id=5$
RewriteRule ^promo$ /sale? [R=301,L]

Готовые правила

HTTP → HTTPS

.htaccess
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

www → без www

.htaccess
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

Убрать слэш в конце

.htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ /$1 [R=301,L]

index.php / index.html → /

.htaccess
RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(.*)index\.(php|html)
RewriteRule ^(.*)index\.(php|html)$ /$1 [R=301,L]

Как применить правила

  • Apache: добавьте правила в начало файла .htaccess в корне сайта, до правил CMS. Нужен включённый mod_rewrite.
  • nginx: вставьте строки внутрь блока server { }, проверьте конфиг командой nginx -t и перезагрузите: nginx -s reload.
  • После внедрения проверьте несколько адресов в проверке кода ответа: должен быть один шаг с кодом 301.

Не знаете, какие адреса перенаправлять? Monitor404 соберёт битые URL, на которые реально приходят посетители, подскажет похожие живые страницы и выгрузит правила в этом же формате. Подробнее о кодах — в статье «301 редирект: что это и как настроить».

Частые вопросы

Как сделать 301 редирект в .htaccess?

Для одной страницы: Redirect 301 /old-page https://site.ru/new-page или RewriteRule ^old-page$ /new-page [R=301,L]. Генератор выше создаёт такие правила для списка адресов.

Чем 301 отличается от 308?

Оба постоянные. 308 гарантирует, что браузер повторит запрос тем же методом (например, POST), 301 разрешает сменить POST на GET. Для обычных страниц разницы нет — используйте 301.

Как перенаправить страницу с параметрами (?id=5)?

В Apache — через RewriteCond %{QUERY_STRING}, в nginx — проверкой $request_uri или $arg_id. Генератор делает это автоматически, если в адресе есть «?».

Сколько редиректов можно добавить в .htaccess?

Ограничения нет, но каждое правило проверяется на каждый запрос. При тысячах правил удобнее nginx map или перенаправления на уровне CMS.