Если вы используете веб-сайт на сервере 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 для последовательности.

Заключение

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

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

Практический пример: Перенаправление старых URL-адресов на новые

Представьте, что вы изменили структуру своего блога и хотите перенаправить трафик с устаревшего поста на новый:

Перенаправление 301 /old-blog-post https://www.example.com/blog/new-post

Эта простая строка гарантирует, что:

  • Поисковые системы переносят SEO-ценность на новый URL

  • Пользователи не попадают на страницу 404

  • Перенаправление происходит мгновенно с помощью кода статуса 301 (постоянный)