Если вы используете веб-сайт на сервере Apache, файл .htaccess – один из самых мощных инструментов в вашем распоряжении. Он позволяет вам контролировать поведение ваших URL – от перенаправления до чистой перезаписи URL – без необходимости изменять фактическую конфигурацию сервера.

В этой статье мы рассмотрим основы перенаправления и переписывания URL с помощью .htaccess, с наглядными примерами и объяснениями.

Что такое файл .htaccess?

.htaccess расшифровывается как Hypertext Access. Это конфигурационный файл, используемый на веб-серверах на базе Apache, который позволяет вносить изменения в поведение сервера на уровне директории.

Вы можете:

  • Перенаправлять трафик с одного URL на другой

  • Создавать чистые URL (например, /about вместо /about.php)

  • Ограничивать доступ к определенным страницам

  • Включить HTTPS

  • И многое другое

Перенаправление URL-адресов

1. 301 Постоянное перенаправление

Используйте эту функцию, когда страница навсегда переместилась на новый URL.

Перенаправление 301 /old-page.html https://yourdomain.com/new-page.html

2. 302 Временный редирект

Используется, когда перенаправление носит временный характер.

Перенаправление 302 /temp-page.html https://yourdomain.com/coming-soon.html

3. Перенаправление с помощью mod_rewrite

Вы также можете перенаправлять с помощью RewriteRule:

RewriteEngine On
RewriteRule ^old-page$ https://yourdomain.com/new-page [R=301,L]

Переписывание URL-адресов (чистые URL-адреса)

Переписывание URL используется для того, чтобы сделать URL более удобными для пользователей и SEO. Например, вместо:

https://example.com/product.php?id=123

Вы можете использовать:

https://example.com/product/123

1. Основное правило переписывания

RewriteEngine On
RewriteRule ^product/([0-9] )$ product.php?id=$1 [L]

Это указывает Apache:

  • Когда кто-то обращается к /product/123

  • Внутренне переписать его на product.php?id=123

2. Удалить расширение .php

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^([^\.] )$ $1.php [L]

Это позволит пользователям получить доступ к example.com/about вместо example.com/about.php.

Лучшие практики

  • Всегда делайте резервную копию файла .htaccess перед внесением изменений.

  • Используйте [L], чтобы остановить обработку дальнейших правил после того, как найдено совпадение.

  • Тестируйте свои редиректы с помощью таких инструментов, как httpstatus.io.

  • Не смешивайте Redirect и RewriteRule в одном блоке – отдайте предпочтение RewriteRule для единообразия.

Бонус: принудительное использование HTTPS с помощью .htaccess

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

Это заставит весь трафик использовать HTTPS, что важно для современной безопасности и SEO.

Заключение

Файл .htaccess дает вам невероятный контроль над тем, как работают ваши URL-адреса. Независимо от того, перенаправляете ли вы старые страницы, очищаете неаккуратные URL-адреса или обеспечиваете безопасность трафика, освоение этих простых правил может значительно улучшить производительность вашего сайта и удобство работы с ним.