.htaccess - использовать модуль mod_rewrite веб-сервера apache | ВесьТоп создание и продвижение сайтов

Поддержка сайта

Высокие позиции в поисковой системе, на прямую зависят от развития вашего сайта.

Продвижение сайтов

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

Создание сайтов

Мы делаем сайты быстро, недорого и профессионально. От работы с нами, у вас останутся только положительные эмоции.

.htaccess — использовать модуль mod_rewrite веб-сервера apache

Модуль Apache mod_rewrite основан на регулярных выражениях и позволяет перезаписывать или, другими словами, перенаправлять URL-запросы в определенный подкаталог, и это перенаправление выполняется на уровне сервера.

Например, при вводе адреса: example.com мы хотим открыть ресурс, который размещен в подкаталоге / folder1 / этого URL-адреса, а именно:

example.com/folder1/resource.html

Этого эффекта можно добиться с помощью mod_rewrite.

Функциональность mod_rewrite определяется в файле .htaccess в корневом каталоге пользователя. Чтобы увидеть служебные файлы, чьи имена начинаются с точки в файловом менеджере, вам нужно нажать кнопку «Настройки», установить флажок «Показать скрытые файлы (точечные файлы)» и нажать кнопку «Сохранить», чтобы сохранить изменения:

.htaccess - использовать модуль mod_rewrite веб-сервера apache

Примеры использования mod_rewrite

Сначала мы покажем несколько примеров, а затем объясним, что они означают.

В первом примере мы покажем вам, как перенаправить URL:

http://www.example.com/folder1/ на

http://www.example.com/folder2/

Параметры + FollowSymLinks RewriteEngine On RewriteRule ^ folder1. * $ Http://www.example.com/folder2/ [R = 301, L]

Если мы хотим, чтобы URL-адрес http://www.example.com/folder1/ открывал домашний каталог нашего сайта, а именно http://www.example.com, то наш файл .htaccess должен выглядеть так:

Параметры + FollowSymLinks RewriteEngine On RewriteRule ^ folder1. * $ Http://www.example.com/ [R = 301, L]

В следующем примере URL будет перенаправлен:

http://www.example.com/folder1/file.htm, чтобы открыть с

http://www.example.com/folder2/file.html

Важно отметить, что для успешной работы перенаправления содержимое двух папок должно быть идентичным.

Параметры + FollowSymLinks RewriteEngine On RewriteRule ^ folder1 /(.*)$ http://example.com/folder2/$1 [R = 301, L]

директивы mod_rewrite

  • Options + FollowSymLinks — это директива веб-сервера apache, которая необходима для использования модуля mod_rewrite.
  • RewriteEngine — директива, разрешающая использование mod_rewrite.
  • RewriteRule — с помощью этой директивы мы определяем само правило.

Первая часть выражения после RewriteRule определяет, как выглядит исходный URL. Как упоминалось выше, это определение основано на регулярных выражениях. Краткое руководство к ним приведено в конце статьи.

Вторая часть после RewriteRule определяет новый URL-путь к ресурсу. Эта ссылка относится к основной папке корневого хостинга документов, также могут быть включены подкаталоги.

Символ $ 1, использованный в конце последнего примера, указывает, что подстраницы должны вызываться из нового места, которое мы выбрали. Это делается только в последнем примере, потому что только здесь есть идентичный контент, если нет идентичного контента, как в первых двух примерах, $ 1 не добавляется.

[R = 301, L] — эта строка выполняет перенаправление с кодом состояния 301, а также останавливает любую последующую перезапись с флагом L. Дополнительная информация о доступных флагах, используемых в mod_rewrite, помещается в конце статьи.

В следующем примере показано, как перенаправить URL http://www.example.com/file.html на http://www.example.com/folder1/file.html.

Для успешной работы перенаправления папка folder1 должна существовать и содержать содержимое.

Параметры + FollowSymLinks RewriteEngine On RewriteCond% {HTTP_HOST} example.com $ [NC] RewriteCond% {HTTP_HOST}! Folder1 RewriteRule ^ (. *) $ Http://example.com/folder1/$1 [R = 301, L]

В этом примере есть несколько новых директив:

RewriteCond% {HTTP_HOST} — указывает, какие адреса будут перенаправлены, а какие нет. В нашем случае мы хотим перенаправить example.com.

! показывает то, что мы не хотим перенаправлять.

[NC] — этот флаг означает отсутствие регистра и делает директиву нечувствительной к регистру (нижний / верхний регистр).

Перенаправьте http://example.com на http://www.example.com. Этот пример также будет работать, если мы попытаемся получить доступ к определенному файлу, например http://example.com/file.html:

Параметры + FollowSymLinks RewriteEngine на RewriteCond% {HTTP_HOST} ^ example.com [NC] RewriteRule ^ (. *) $ Http://www.example.com/$1 [R = 301, L]

Регулярные выражения (regex)

Регулярное выражение означает поиск текста по шаблону. В этой части статьи мы опишем основные символы, используемые в регулярных выражениях.

Символ Описание
^ показывает начало выражения, для которого будет выполняться поиск.
$ показывает конец выражения, для которого будет выполняться поиск совпадения.
^ index.html $ указывает, что контент, который вы ищете, должен быть в точности index.html
. показывает каждый непустой символ.
* указывает, что предыдущий символ может содержать ноль или более совпадений.
^ архив. * $ таким образом, есть соответствие каждому выражению, которое начинается с archive: archive2012, archive_daily.
^. * $ показывает перехватить все, это может быть полезно в случае, если мы не знаем, какой URL будет вводить пользователь.

Флаги в mod_rewrite

Если перезапись URL-адреса должна быть связана с определенными параметрами (флагами), которые управляют поведением mod_rewrite, они отображаются в квадратных скобках после RewriteRule и разделяются запятыми, если их несколько.

Таким образом, также может применяться внешнее перенаправление через код состояния HTTP. В следующей таблице показан набор параметров RewriteRule. Полный список можно найти на официальном сайте Apache.

OptionFlag Описание
Перенаправить р Флаг [R] используется для перенаправления HTTP, которое выполняется браузером с кодом состояния 302. Чтобы использовать другой код состояния, добавьте его со знаком равенства к флагу, например [R = 301].
Запрещено F Флаг [F] предписывает веб-серверу отправить в браузер код состояния 403 (Запрещено).
Ушел (исчез) г Веб-сервер отправляет браузеру код состояния 410 (Gone) и указывает, что ранее доступный ресурс больше не доступен.
Последний L Флаг [L] заставляет mod_rewrite прекратить обработку набора правил.
Nocase (без шрифта) NC Флаг [NC] указывает, что шрифт (нижний / верхний регистр) не имеет значения при проверке соответствия URL условиям перезаписи.
Цепь C Следующее правило RewriteRule учитывается, только если выполняется текущее состояние.
Читайте так же:
Not found

Нам доверяют

Интернет магазин