Rewritecond htaccess: Директива RewriteCond файла .htaccess

.*$ index.php [NC,L]

Надо: исключить из этой конструкции файлы типов .css и .js. Сам я с файлом htaccess на этом уровне работаю впервые (addDefaultCharset не в счет)

Дословно со слов автора: *Данная запись означает буквально следующее: если запрошенный URL-адрес не является файлом, не является символической ссылкой и не является директорией, то подменить виртуальный адрес файлом index.php. При этом, суперглобальная переменная PHP

  **$_SERVER['REQUEST_URI']**

будет содержать именно запрошенный виртуальный адрес.*

Мои рассуждения:

  1. RewriteCond — формирует определенное правило, по которому будет делаться редирект
  2. %{REQUEST_FILENAME} — сама строка запроса
  3. -s, -l, -d — специальные параметры, проверяющие на «ненулевость» файла, символичную ссылку, каталог. Т.е. если строка запроса указывает на существующие папку или файл, то редиректа не будет
  4. Последние 2 строки — выполняют сам редирект

Объясните мне, как надо записать правило, чтобы из редиректа убрать файлы css, js. .]+$ [NC] RewriteCond %{REQUEST_URI} !robots\.txt$ RewriteRule . /index.php [L]

Пояснение: Если это не файлы с расширениями css, js,… [и] не файл robots.txt, то производится виртуальный редирект на /index.php.

7

Содержание

Зарегистрируйтесь или войдите

Регистрация через Google

Регистрация через Facebook

Регистрация через почту

Отправить без регистрации

Почта

Необходима, но никому не показывается

Отправить без регистрации

Почта

Необходима, но никому не показывается

Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки

Как работает и что такое mod_rewrite, описание модуля mod_rewrite — hostgid.

net

Данная статья была написана с целью дать читателю понимание базовых принципов и основ работы модуля mod_rewrite в файле .htaccess. Здесь не будет конкретных примеров как сделать то или иное действие, это будет рассматриваться в отдельных статьях. Статья разбита на логические разделы, которые в некоторых случаях дополняют друг друга. Поэтому при прочтении статьи, может сложиться

чувство недосказанности

впечатление неполного изложения, но все необходимые для понимая данные описаны в этой или других статьях, на которые естественно есть ссылки.
Что такое mod_rewrite
Принцип работы модуля mod_rewrite
RewriteCond
RewriteRule
Обратные связи RewriteCond и RewriteRule
Переменные сервера

Что такое mod_rewrite

mod_rewrite — это модуль веб сервераApache, использующийся для преобразования URL адресов. Под преобразованием следует понимать фактически любые действия с URL. Это очень мощное и в то же время гибкое средство, имеющее очень широкие возможности. Модуль позволяет производить практически любые типы преобразований. С помощью mod_rewrite можно настраивать редиректы, изменять URL адреса, блокировать доступ и т.д. Он поддерживает неограниченное количество правил преобразования, регулярные выражения, обратные связи с группированными частями шаблона, разные источники информации для преобразований (переменные сервера, HTTP заголовки, время и т.д.). За счет такого набора возможностей, достигается высокая функциональность и гибкость. По умолчанию этот модуль выключен, для того что бы его включить, в .htaccess необходимо добавить следующие директивы:

RewriteEngine On
RewriteBase /

RewriteEngine On — директива включает модуль.
RewriteBase — указывает путь от корня сайта до файла .htaccess. Если .htaccess лежит в корне, то указывать этот параметр нужно как в примере, если во внутреннем каталоге, то указываем путь к этому каталогу, например /images.

Принцип работы модуля mod_rewrite

Работа модуля основана на наборе правил и условий, согласно которым производится преобразование. При получении запроса, Apache передает в mod_rewrite путь к файлу начиная от того места, где находится файл .htaccess, остальная часть пути обрезается. Если поступил запрос http://some-url.com/cat/cat2/file.html, а .htaccess лежит в корне, то в mod_rewrite попадет cat/cat2/file.html (без слеша в начале). Если .htaccess лежите в директории /cat, то в mod_rewrite попадет cat2/file.html. Далее mod_rewrite анализирует правила в .htaccess и действует согласно этих правил. Стоит знать, что mod_rewrite работает не со ссылками и не с URL адресами, а с обычными строками. То есть адрес, который нужно преобразовать, передается mod_rewrite как обычная строка, и эту строку можно преобразовать как угодно. Для построения правил используются две директивы, RewriteCond и RewriteRule (более детально эти директивы описаны ниже).​

RewriteCond — в этой директиве определяются условия, при которых сработает правило преобразования RewriteRule.
(.*)$ /index.php [L]

Несмотря на то, что директива RewriteCond стоит выше, чем правило RewriteRule, mod_rewrite сначала проверяет строку на соответствие с шаблоном в RewriteRule, и если строка совпадает с шаблоном, он смотрит на указанные выше условия в RewriteCond. Если условия тоже совпадают, происходит преобразование согласно правилу RewriteRule. Рассмотрим подробней синтаксис и предназначение директив RewriteCond и RewriteRule.

RewriteCond

Как уже писалось выше, в этой директиве указываются условия, при которых правило в директиве RewriteRule будет выполнено. Эта директива выглядит так:

RewriteCond [строка_для_сравнения] [условие] [флаг]
RewriteCond %{REQUEST_URI} !.(ico|css|js|txt)$ [NC]

В этом примере правило условие будет выполнено, если запрос пользователя не содержит расширение ​ico,css,js или txt.

Строка для сравнения — кроме обычного текста может содержать регулярное выражение, обратные RewriteCond и RewriteRule связи и переменные сервера. На практике здесь используются переменные сервера и иногда регулярные выражения.
Условие — собственно это то, с чем сравнивается строка для сравнения. Может содержать текст, регулярные выражения и специальные символы:

  • «-d» — проверяет правильность пути (его существование) и является ли этот путь, путем к каталогу.
  • «-f» — проверяет правильность пути (его существование) и является ли этот путь, путем к обычному файлу.
  • «-s» — то ж, что и -f, но дополнительно проверяет, что размер файла больше 0 (ноля).
  • «-l» — проверяет правильность пути (его существование) и является ли этот путь символической ссылкой.
  • «-F» — проверяет через внутренний подзапрос, является ли сравниваемая строка реально существующим файлом, при этом используются все существующие списки контроля доступа сервера. Это негативно сказывается на производительности, стоит использовать осторожно.
  • «-U» — проверяет через внутренний подзапрос, является ли сравниваемая строка реально URL адресом, при этом используются все существующие списки контроля доступа сервера. Это негативно сказывается на производительности, стоит использовать осторожно.

Дополнительно, перед условием, допускается использование логических символов:

  • «!» — инвертирование значения, указывает на то, что сравниваемая строка должна не соответствовать шаблону условия.
  • «<« — лексически меньше. Например символ «a» лексически меньше символа «b», «a» < «b».
  • «>» — лексически больше.
  • «=» — равенство, используется по умолчанию.

Флаг — необязательный параметр, в котором указываются дополнительные опции (через запятую, если их несколько). Указывается в конце правила в квадратных скобках [].

  • [NC] — регистронезависимый, то есть регистр (A-Z или a-z) в строке для сравнения или в условии не имеет значения.
  • [OR] — логическое ИЛИ. Используется, когда перед директивой RewriteRule находится несколько директив RewriteCond и правило в RewriteRule должно быть выполнено при совпадении одного из RewriteCond.​ Если флаг OR не указан, RewriteRule сработает только при соответствии всех директив RewriteCond.

RewriteRule

​В RewriteRule указывается правило для преобразования, то, как мы хотим изменить URL. По факту эта директива также содержит условие, при совпадении которого, будет произведено преобразование. Это шаблон, с которым сверяется полученная mod_rewrite строка. Стоит отметить, что если ничего подставлять не нужно, а такие случаи иногда происходят, в новом значении необходимо указать прочерк «-«. Схематически правило RewriteRule выглядит следующим образом:

RewriteRule [шаблон] [новое_значение] [флаг]
RewriteRule ^(. *)$ /index.php [L]

Шаблон — то, с чем будет сравниваться исходная строка. Исходная строка необязательно является той, которую запросил пользователь. Она могла быть ранее изменена другими правилами RewriteRule. Может содержать обычный текст, регулярные выражение и обратные RewriteCond и RewriteRule связи. Исходная строка, это путь от файла .htaccess до файла, доменного имени там нет.
Новое значение — это значение, на которое будет изменена исходная строка после преобразования. Может содержать обычный текст, регулярные выражение, обратные RewriteCond и RewriteRule связи и переменные сервера.
Флаг — ​необязательный параметр, в котором указываются дополнительные опции, (через запятую, если их несколько). Указывается в конце правила в квадратных скобках [].

  • [R=code] — редирект. code — это код ответа браузеру, по умолчанию используется 302 (временно перемещен), поэтому для постоянного редиректа используйте код 301.
  • [F] — запрет доступа к URL, Forbidden. Сервер возвращает браузеру ошибку с кодом 403.
  • [G] — возвращает ошибку 410, URL не существует.
  • [P] — Apache выполняет подзапрос к указанному адресу с использование другого модуля Apache mod_proxy.
  • [L] — последнее правило. Говорит о том, что на этом месте следует остановить преобразование URL.
  • [N] — процесс преобразований будет запущен опять, начиная с самого первого правила. Будет использована уже модифицированная ранее строка.
  • [C] — связь со следующим правилом, создается цепочка правил. Если правило не соответствует, все последующие правила в цепочке пропускаются.
  • [NS] — срабатывают правила только для запросов, подзапросы игнорируются.
  • [T] — принудительно указать MIME-тип файла.
  • [NC] — не учитывать регистр символов.
  • [QSA] — дополнять строку запроса, а не заменять ее. Флаг стоит использовать при работе с GET параметрами в переменной %{QUERY_STRING}, что бы их не терять. Если это флаг не указан, данные в %{QUERY_STRING} будут полностью заменены параметрами из RewriteRule. Если флаг указан, новые параметры будут добавлены в начало %{QUERY_STRING}.
  • [NE] — запрещает преобразование специальных символов в их hex эквиваленты.
  • [PT] — останавливает преобразование и передает строку дальше для обработки другими директивами (Alias, ScriptAlias, Redirect и т.д.).
  • [S] — пропустить следующее правило. Есть возможность указать несколько правил в формате S=N, где N это количество правил.
  • [E=VAR:VAL] — установить переменную окружения, где VAR это имя переменной, а VAL ее значение.Значение может быть обратной RewriteCond и RewriteRule связью или текстом.
  • [CO=NAME:VAL:domain:lifetime:path:secure:httponly] — установить cookie в браузер. NAME — имя куки, VAL — значение, domain — имя домена, lifetime — время жизни (опционально), path — путь, для которого эта кука валидна, по умолчанию равна «/», secure — если установлено 1 или true, куки будут действительны только при https (безопасном) соединении, httponly — если установлено 1 или true, куки будут доступны для JavaScript.

Обратные связи RewriteCond и RewriteRule

Обратные связи, это возможность использования группы символов (заключенные в скобки «()») для их последующей подстановки. Например в скобках можно указать определенное регулярное выражение и таким образом охватить большое количество адресов.
$N — позволяет использовать группу символов из шаблона директивы RewriteRule.
%N — позволяет использовать группу символов из шаблона директивы RewriteCond.
Вместо символ «N» в обоих случаях используется число от 1 до 9.
На практике это выглядит следующим образом. Рассмотрим простой пример. cat1/cat2/cat3/cat4/(.*).html$ $1.html

Теперь, при обращении к по адресу http://some-url.com/page.html, будет отображаться информация с адреса http://some-url.com/cat1/cat2/cat3/cat4/page.html и так со всеми адресами вида http://some-url.com/*.html. Точно также, с использованием «%N», можно подставлять группы символов из шаблона для RewriteCond. В данном примере, вместо $1 подставляется группа символов в скобках из шаблона.

Переменные сервера

​Переменные сервера могут содержать много полезной информации, которую можно и нужно использовать для построения правил. Ниже приведен список этих переменных:
HTTP_USER_AGENT — дает информацию о браузере и ОС пользователя. При посещении сайта пользователь, передается User Agent, по факту это обозначает ПО, с помощью которого производится доступ к сайту.
HTTP_REFERER — адрес страницы, с которой был осуществлен переход на сайт.
HTTP_COOKIE — список cookie, которые передает браузер.
HTTP_FORWARDED — адрес страницы, с который был переход. Большой разницы с HTTP_REFERER я не заметил.
HTTP_HOST — адрес сервера (сайта).
HTTP_ACCEPT — это пожелания клиента, по типу документа, который он хочет получить. На деле это выглядит так, браузер отправляет на сервер в http заголовке типы файлов, которые он хочет получить (обычно это относится к изображениям и другим медиа файлам), то есть сообщает, какой тип файла он может обработать.
REMOTE_ADDR — IP адрес посетителя.
REMOTE_HOST — адрес (хост) пользователя, который отдается командой «host» по IP адресу.
REMOTE_IDENT — имя пользователя в формате имя.хост.
REMOTE_USER — то же самое что и REMOTE_IDENT, но не содержит хост пользователя.
​REQUEST_METHOD — тип запроса к сайту (GET, POST, HEAD).
SCRIPT_FILENAME — полный путь к запрошенному файлу или адресу.
PATH_INFO — данные, которые передавались в скрипт.
QUERY_STRING — строка, переданная как запрос в CGI скрипт, GET параметры.
AUTH_TYPE — тип идентификации пользователя.
DOCUMENT_ROOT — путь к корневой директории сервера.
SERVER_ADMIN — email администратора сервера.
SERVER_NAME — адрес (имя) сервера, отдаваемый командой host.
SERVER_ADDR — IP вашего сайта.
SERVER_PORT — порт, га котором работает Apache.
SERVER_PROTOCOL — версия http протокола.
SERVER_SOFTWARE — используемая версия Apache.
TIME_YEAR, TIME_MON, TIME_DAY, TIME_HOUR, TIME_MIN, TIME_SEC, TIME_WDAY, TIME — время.
API_VERSION —версия API модуля Apache.
THE_REQUEST — строка содержит весь http запрос, отправленный браузером на сервер (GET /index.html HTTP/1. 1). Здесь не включены дополнительные заголовки.
REQUEST_URI — адрес, запрошенный в http заголовке.
REQUEST_FILENAME — полный путь к запрошенному файлу, по факту содержит те же данные, что и SCRIPT_FILENAME.
IS_SUBREQ — проверка на подзапрос. Если да — ответ true, если нет — ответ false.
Список переменных вашего сервера, вы можете легко узнать поместив в корень сайта php файл с кодом:

phpinfo () ;
?>

Набрав адрес этого файла в браузере, внизу страницы вы получите информацию о переменных сервера.

правил перезаписи .htaccess | Сообщество Media Temple

Обзор

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

Прямые запросы для одного подкаталога в другой подкаталог или основной каталог (корневой каталог документа)
Пример: http://example. com/folder1/ становится http:// example.com/folder2/ или просто http://example.com/.

Прямые запросы к подкаталогу
Пример: http://example.com/file.html становится http://example.com/folder1/file.html .

Добавлять www к каждому запросу
Пример: http://example.com становится http://www.example.com . Или преобразуйте http:// в https:// .

Преобразование URL во все строчные буквы с помощью Rewrite Map
Пример: YourDomaIn.com/recIpeS.html становится yourdomain.com/recipes
Это поможет предотвратить появление ошибок HTTP из-за опечаток.

mod_rewrite

При правильной реализации mod_rewrite очень мощный. Есть много других приложений для mod_rewrite , о которых вы можете узнать на apache.org. Пожалуйста, обратитесь к их веб-сайту для других возможных сценариев перезаписи.

Эти примеры предоставлены в качестве любезности — (mt) Media Temple не разрабатывает настраиваемые правила перезаписи для веб-сайтов отдельных клиентов.

Более простой способ перенаправления ваших веб-сайтов — использовать инструмент перенаправления доменов в вашем AccountCenter. Для получения дополнительной информации, пожалуйста, прочитайте: Сетка с использованием инструмента перенаправления доменов.

ПРОЧИТАЙТЕ СНАЧАЛА

Эта статья предоставлена ​​в качестве любезности. Установка, настройка и устранение неполадок сторонних приложений не входят в объем поддержки, предоставляемой (mt) Media Temple. Пожалуйста, найдите минутку, чтобы просмотреть Заявление о поддержке.

ПРОЧИТАЙТЕ СНАЧАЛА

Эта статья предоставлена ​​в качестве любезности. Установка, настройка и устранение неполадок сторонних приложений не входят в общий объем поддержки, предоставляемой (mt) Media Temple. Пожалуйста, найдите минутку, чтобы просмотреть Заявление о поддержке.

Расширенная поддержка может помочь!

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

ПРОЧИТАЙТЕ СНАЧАЛА
Эта статья предоставлена ​​в качестве любезности. Установка, настройка и устранение неполадок сторонних приложений не входят в объем поддержки, предоставляемой (mt) Media Temple. Пожалуйста, найдите минутку, чтобы просмотреть Заявление о поддержке.

Требования

Прежде чем начать, подготовьте:

  • Учетные данные пользователя FTP
  • Учетные данные пользователя FTP
  • Учетные данные пользователя SSH

Инструкции

  1. Создайте обычный текстовый файл .htaccess (щелкните ссылку, чтобы узнать подробности о файле этого типа) или добавьте строки из примера в начало существующего файла . htaccess.
  2. Добавьте в файл строки из соответствующего примера. Обратите внимание, что вы должны заменить текст примера своей информацией. Замените example.com своим собственным доменом, folder1 — своим именем папки, file.html — своим именем файла и т. д. Сохраните изменения.
  3. Используйте FTP или scp, чтобы загрузить файл в корневой каталог документов соответствующего домена. Если ваш домен — example.com, вы должны загрузить файл по адресу:
    • домены/example.com/html/
    • /var/www/vhosts/example.com/httpdocs/
    • Это зависит от вашей конфигурации LAMP.

Вот оно! Как только вы загрузите файл, правило перезаписи должно вступить в силу немедленно.

Некоторые системы управления контентом (CMS), такие как WordPress, например, перезаписывают файлы .htaccess своими собственными настройками. В этом случае вам, возможно, придется найти способ переписать код внутри CMS.

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

http://example. com/folder1/ становится http://example.com/folder2/ или просто http://example.com/ .

domains/example.com/html/folder2/ должны существовать и содержать контент, чтобы это работало.

.htaccess

Этот файл .htaccess будет перенаправлять http://example.com/folder1/ на http://example.com/folder2/. Выберите эту версию, если у вас не одинаковая файловая структура в обоих каталогах: 9папка1/(.*)$ http://gs.mt-example.com/folder2/$1 [R=301,L]

Test

Загрузите этот файл в папку2 (если вы следовали первому или третьему примеру) или в папку html (если вы следовали второму примеру) с помощью FTPFTPscp:

Имя файла: index.html

 
<тело>
Mod_rewrite работает!


 

Затем, если вы следовали первому или второму примеру, посетите http://example.com/folder1/ в своем браузере. Вы должны увидеть изменение URL на http://example. com/folder2/ или http://example.com/ и содержимое тестовой страницы.

Если вы следовали третьему примеру, посетите http://example.com/folder1/index.html . Вы должны быть перенаправлены на http://example.com/folder2/index.html и увидеть содержимое тестовой страницы.

Расшифровка кода

  • Options +FollowSymLinks — это директива Apache, необходимая для mod_rewrite.
  • RewriteEngine On включает mod_rewrite.
  • RewriteRule определяет конкретное правило.
  • Первая строка символов после RewriteRule определяет, как выглядит исходный URL-адрес. В конце этой статьи есть более подробное объяснение специальных символов.
  • Вторая строка после RewriteRule определяет новый URL-адрес. Это относится к корневому каталогу документа (html). / означает сам каталог html, также можно указать подпапки.
    • $1 в конце соответствует части в скобках () из первой строки. По сути, это гарантирует, что подстраницы будут перенаправлены на одну и ту же подстраницу, а не на главную страницу. Оставьте его, чтобы перенаправить на главную страницу. (По этой причине он опущен в первых двух примерах. Если у вас нет того же содержимого в новом каталоге, что и в старом, не используйте его.)
  • [R=301,L] — это выполняет перенаправление 301, а также предотвращает влияние любых последующих правил перезаписи на этот URL (хорошая идея добавить после последнего правила). Он находится на той же строке, что и RewriteRule, в конце.

Прямые запросы к подкаталогу

http://example.com/file.html становится http://example.com/folder1/file.html .

Примечание. Каталог folder1 должен быть уникальным в URL-адресе. Это не будет работать для http://example.com/folder1/folder1.html 9(.*)$ http://example.com/folder1/$1 [R=301,L]

Тест

Загрузите этот файл в папку1 с помощью FTP:

Имя файла: index. html

 
<тело>
Mod_rewrite работает!


 

Затем посетите http://example.com/ в своем браузере. Вы должны увидеть изменение URL-адреса на http://example.com/folder1/ и содержание тестовой страницы.

Расшифровка кода

  • Options +FollowSymLinks — это директива Apache, необходимая для mod_rewrite.
  • RewriteEngine On включает mod_rewrite.
  • RewriteCond %{HTTP_HOST} показывает, какие URL-адреса мы делаем и не хотим запускать при перезаписи.
    • В данном случае мы хотим сопоставить example.com.
    • ! означает «нет». Мы не хотим переписывать URL-адрес, который уже включает папку1, потому что тогда он будет продолжать добавлять папку1 и станет бесконечно длинным URL-адресом.
  • [NC] соответствует версии URL как в верхнем, так и в нижнем регистре.
  • RewriteRule определяет конкретное правило.
  • Первая строка символов после RewriteRule определяет, как выглядит исходный URL-адрес. В конце этой статьи есть более подробное объяснение специальных символов.
  • Вторая строка после RewriteRule определяет новый URL-адрес. Это относится к корневому каталогу документа (html). / означает сам каталог html, также можно указать подпапки.
    • $1 в конце соответствует части в скобках () из первой строки. По сути, это гарантирует, что подстраницы будут перенаправлены на одну и ту же подстраницу, а не на главную страницу. Оставьте его для перенаправления на главную страницу подкаталога.
  • [R=301,L] — это выполняет перенаправление 301, а также предотвращает влияние любых последующих правил перезаписи на этот URL (хорошая идея добавить после последнего правила). Он находится на той же строке, что и RewriteRule, в конце.

Добавить www или https

http://example.com становится http://www.example.com. Или http://example.com становится https://example.com.

.htaccess

  • Этот файл . htaccess будет перенаправлять http://example.com/ на http://www.example.com/. Это также будет работать, если запрашивается отдельный файл, например http://example.com/file.html: 9(.*)$ https://www.example.com/$1 [П, Л]

    Тест

    Посетите http://example.com в браузере. Вы должны увидеть, что отображается та же страница, но URL-адрес изменился на http://www.example.com (первый пример) или https://example.com (второй пример).

    Кроме того, http://example.com/file.html станет http://www.example.com/file.html или https://example.com/file.html .

    Расшифровка кода

    • Options +FollowSymLinks — это директива Apache, необходимая для mod_rewrite.
    • RewriteEngine On включает mod_rewrite.
    • RewriteCond %{HTTP_HOST} показывает, какие URL-адреса мы делаем и не хотим запускать при перезаписи.
      • В этом случае мы хотим сопоставить все, что начинается с example.com.
    • [NC] соответствует версии URL как в верхнем, так и в нижнем регистре.
    • RewriteRule определяет конкретное правило.
    • Первая строка символов после RewriteRule определяет, как выглядит исходный URL-адрес. В конце этой статьи есть более подробное объяснение специальных символов.
    • Вторая строка после RewriteRule определяет новый URL-адрес. Это относится к корневому каталогу документа (html). / означает сам каталог html, также можно указать подпапки.
      • $1 в конце соответствует части в скобках () из первой строки. По сути, это гарантирует, что подстраницы будут перенаправлены на одну и ту же подстраницу, а не на главную страницу.
    • [R=301,L] — это выполняет перенаправление 301, а также предотвращает влияние любых последующих правил перезаписи на этот URL (хорошая идея добавить после последнего правила). Он находится на той же строке, что и RewriteRule, в конце.

    Преобразовать URL в нижний регистр с помощью Rewrite Map

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

    www.example.com/recIPes становится www.example.com/recipes

    Примечание. Поскольку это правило требует редактирования файла конфигурации на уровне сервера, пользователи Grid и Managed WordPress не смогут реализовать это правило.

    Чтобы это работало правильно, вы также должны добавить директиву в ваш файл vhost (httpd.conf):

     
            RewriteMap lc int:tolower
     
    •  Для Plesk: перейдите в раздел Домены > example.com > Настройки веб-хостинга > Дополнительные директивы Apache и разместите приведенный выше код.

    Затем откройте файл .htaccess и добавьте следующие строки:

     RewriteEngine On
    RewriteCond %{REQUEST_URI} [A-Z]
    Правило перезаписи.  ${lc:%{REQUEST_URI}} [R=301,L] 

    Примечание: вместо использования RewriteMap для преобразования URL-адресов в нижний регистр Apache рекомендует использовать mod_spelling для игнорирования чувствительности к регистру.

    Тест

    Перейдите к своему домену, используя комбинацию прописных и строчных букв.

     Пояснение кода

    • RewriteEngine On включает mod_rewrite.
    • RewriteCond %{REQUEST_URI} [A-Z] — получает введенный адрес.
    • Правило перезаписи . ${lc:%{REQUEST_URI}} – использует переменную lc, добавленную в файл vhost, для преобразования всех символов в нижний регистр.
    • [R=301,L] — выполняет перенаправление 301, а также предотвращает влияние любых последующих правил перезаписи на этот URL (хорошая идея добавить после последнего правила). Он находится на той же строке, что и RewriteRule, в конце.
    • 9.*$ означает «соответствовать чему угодно и чему угодно». Это полезно, если вы не знаете, что ваши пользователи могут вводить в качестве URL-адреса.
  • () указывает, какую часть сохранить для повторного использования в переменной $1 во второй строке. Это полезно для обработки запросов на определенные файлы, которые должны совпадать в старой и новой версиях URL.

Дополнительные сведения о регулярных выражениях см. на сайте perl.org.

Устранение неполадок

404 Не найдено

Внимательно изучите новый URL-адрес в браузере. Соответствует ли он файлу, существующему на сервере в новом расположении, указанном правилом перезаписи? Возможно, вам придется сделать правило перезаписи более широким (возможно, вы сможете удалить $1 из второй строки). Это направит перезапись на главную страницу индекса, указанную во второй строке. Или вам может потребоваться скопировать файлы из старого местоположения в новое.

Если URL просто неправильный (например, http://example.com/folder1//file.html — обратите внимание на две /s), вам нужно будет пересмотреть свой синтаксис. (mt) Media Temple не поддерживает устранение неполадок синтаксиса.

Бесконечный URL-адрес, тайм-аут, цикл перенаправления

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

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

Также можно включать перенаправления внутри страниц HTML и PHP. Проверьте страницу, которую вы тестировали, на наличие собственных переадресаций.

В некоторых случаях может помочь добавление [L] после правила перезаписи, поскольку это указывает серверу прекратить попытки перезаписи URL-адреса после применения этого правила.

Ресурсы

Документы Apache для mod_rewrite 
Использование .htaccess
Использование FTP или SFTP

Правила перезаписи .htaccess | Сообщество Media Temple

Обзор

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

Прямые запросы для одного подкаталога в другой подкаталог или основной каталог (корневой каталог документа)
Пример: http://example.com/folder1/ становится http:// example.com/folder2/ или просто http://example.com/ .

Прямые запросы к подкаталогу
Пример: http://example.com/file.html становится http://example.com/folder1/file.html .

Добавлять www к каждому запросу
Пример: http://example.com становится http://www. example.com . Или преобразуйте http:// в https:// .

Преобразование URL во все строчные буквы с помощью Rewrite Map
Пример: YourDomaIn.com/recIpeS.html становится yourdomain.com/recipes
Это поможет предотвратить появление ошибок HTTP из-за опечаток.

mod_rewrite

При правильной реализации mod_rewrite очень мощный. Есть много других приложений для mod_rewrite , о которых вы можете узнать на apache.org. Пожалуйста, обратитесь к их веб-сайту для других возможных сценариев перезаписи.

Эти примеры предоставлены в качестве любезности — (mt) Media Temple не разрабатывает настраиваемые правила перезаписи для веб-сайтов отдельных клиентов.

Более простой способ перенаправления ваших веб-сайтов — использовать инструмент перенаправления доменов в вашем AccountCenter. Для получения дополнительной информации, пожалуйста, прочитайте: Сетка с использованием инструмента перенаправления доменов.

ПРОЧИТАЙТЕ СНАЧАЛА

Эта статья предоставлена ​​в качестве любезности. Установка, настройка и устранение неполадок сторонних приложений не входят в объем поддержки, предоставляемой (mt) Media Temple. Пожалуйста, найдите минутку, чтобы просмотреть Заявление о поддержке.

ПРОЧИТАЙТЕ СНАЧАЛА

Эта статья предоставлена ​​в качестве любезности. Установка, настройка и устранение неполадок сторонних приложений не входят в общий объем поддержки, предоставляемой (mt) Media Temple. Пожалуйста, найдите минутку, чтобы просмотреть Заявление о поддержке.

Расширенная поддержка может помочь!

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

ПРОЧИТАЙТЕ СНАЧАЛА
Эта статья предоставлена ​​в качестве любезности. Установка, настройка и устранение неполадок сторонних приложений не входят в объем поддержки, предоставляемой (mt) Media Temple. Пожалуйста, найдите минутку, чтобы просмотреть Заявление о поддержке.

Требования

Прежде чем начать, подготовьте:

  • Учетные данные пользователя FTP
  • Учетные данные пользователя FTP
  • Учетные данные пользователя SSH

Инструкции

  1. Создайте простой текстовый файл .htaccess (нажмите на ссылку, чтобы узнать подробности о файле этого типа) или добавьте строки из примера в начало существующего файла .htaccess.
  2. Добавьте в файл строки из соответствующего примера. Обратите внимание, что вы должны заменить текст примера своей информацией. Замените example.com своим собственным доменом, folder1 — своим именем папки, file.html — своим именем файла и т. д. Сохраните изменения.
  3. Используйте FTP или scp, чтобы загрузить файл в корневой каталог документов соответствующего домена. Если ваш домен — example.com, вы должны загрузить файл по адресу:
    • домены/example.com/html/
    • /var/www/vhosts/example.com/httpdocs/
    • Это зависит от вашей конфигурации LAMP.

Вот оно! Как только вы загрузите файл, правило перезаписи должно вступить в силу немедленно.

Некоторые системы управления контентом (CMS), такие как WordPress, например, перезаписывают файлы .htaccess своими собственными настройками. В этом случае вам, возможно, придется найти способ переписать код внутри CMS.

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

http://example.com/folder1/ становится http://example.com/folder2/ или просто http://example.com/ .

domains/example.com/html/folder2/ должны существовать и содержать контент, чтобы это работало.

.htaccess

Этот файл .htaccess будет перенаправлять http://example. com/folder1/ на http://example.com/folder2/. Выберите эту версию, если у вас не одинаковая файловая структура в обоих каталогах: 9папка1/(.*)$ http://gs.mt-example.com/folder2/$1 [R=301,L]

Test

Загрузите этот файл в папку2 (если вы следовали первому или третьему примеру) или в папку html (если вы следовали второму примеру) с помощью FTPFTPscp:

Имя файла: index.html

 
<тело>
Mod_rewrite работает!


 

Затем, если вы следовали первому или второму примеру, посетите http://example.com/folder1/ в своем браузере. Вы должны увидеть изменение URL на http://example.com/folder2/ или http://example.com/ и содержимое тестовой страницы.

Если вы следовали третьему примеру, посетите http://example.com/folder1/index.html . Вы должны быть перенаправлены на http://example.com/folder2/index.html и увидеть содержимое тестовой страницы.

Расшифровка кода

  • Options +FollowSymLinks — это директива Apache, необходимая для mod_rewrite.
  • RewriteEngine On включает mod_rewrite.
  • RewriteRule определяет конкретное правило.
  • Первая строка символов после RewriteRule определяет, как выглядит исходный URL-адрес. В конце этой статьи есть более подробное объяснение специальных символов.
  • Вторая строка после RewriteRule определяет новый URL-адрес. Это относится к корневому каталогу документа (html). / означает сам каталог html, также можно указать подпапки.
    • $1 в конце соответствует части в скобках () из первой строки. По сути, это гарантирует, что подстраницы будут перенаправлены на одну и ту же подстраницу, а не на главную страницу. Оставьте его, чтобы перенаправить на главную страницу. (По этой причине он опущен в первых двух примерах. Если у вас нет того же содержимого в новом каталоге, что и в старом, не используйте его. )
  • [R=301,L] — это выполняет перенаправление 301, а также предотвращает влияние любых последующих правил перезаписи на этот URL (хорошая идея добавить после последнего правила). Он находится на той же строке, что и RewriteRule, в конце.

Прямые запросы к подкаталогу

http://example.com/file.html становится http://example.com/folder1/file.html .

Примечание. Каталог folder1 должен быть уникальным в URL-адресе. Это не будет работать для http://example.com/folder1/folder1.html 9(.*)$ http://example.com/folder1/$1 [R=301,L]

Тест

Загрузите этот файл в папку1 с помощью FTP:

Имя файла: index.html

 
<тело>
Mod_rewrite работает!


 

Затем посетите http://example.com/ в своем браузере. Вы должны увидеть изменение URL-адреса на http://example.com/folder1/ и содержание тестовой страницы.

Расшифровка кода

  • Options +FollowSymLinks — это директива Apache, необходимая для mod_rewrite.
  • RewriteEngine On включает mod_rewrite.
  • RewriteCond %{HTTP_HOST} показывает, какие URL-адреса мы делаем и не хотим запускать при перезаписи.
    • В данном случае мы хотим сопоставить example.com.
    • ! означает «нет». Мы не хотим переписывать URL-адрес, который уже включает папку1, потому что тогда он будет продолжать добавлять папку1 и станет бесконечно длинным URL-адресом.
  • [NC] соответствует версии URL как в верхнем, так и в нижнем регистре.
  • RewriteRule определяет конкретное правило.
  • Первая строка символов после RewriteRule определяет, как выглядит исходный URL-адрес. В конце этой статьи есть более подробное объяснение специальных символов.
  • Вторая строка после RewriteRule определяет новый URL-адрес. Это относится к корневому каталогу документа (html). / означает сам каталог html, также можно указать подпапки.
    • $1 в конце соответствует части в скобках () из первой строки. По сути, это гарантирует, что подстраницы будут перенаправлены на одну и ту же подстраницу, а не на главную страницу. Оставьте его для перенаправления на главную страницу подкаталога.
  • [R=301,L] — это выполняет перенаправление 301, а также предотвращает влияние любых последующих правил перезаписи на этот URL (хорошая идея добавить после последнего правила). Он находится на той же строке, что и RewriteRule, в конце.

Добавить www или https

http://example.com становится http://www.example.com. Или http://example.com становится https://example.com.

.htaccess

  • Этот файл .htaccess будет перенаправлять http://example.com/ на http://www.example.com/. Это также будет работать, если запрашивается отдельный файл, например http://example.com/file. html: 9(.*)$ https://www.example.com/$1 [П, Л]

    Тест

    Посетите http://example.com в браузере. Вы должны увидеть, что отображается та же страница, но URL-адрес изменился на http://www.example.com (первый пример) или https://example.com (второй пример).

    Кроме того, http://example.com/file.html станет http://www.example.com/file.html или https://example.com/file.html .

    Расшифровка кода

    • Options +FollowSymLinks — это директива Apache, необходимая для mod_rewrite.
    • RewriteEngine On включает mod_rewrite.
    • RewriteCond %{HTTP_HOST} показывает, какие URL-адреса мы делаем и не хотим запускать при перезаписи.
      • В этом случае мы хотим сопоставить все, что начинается с example.com.
    • [NC] соответствует версии URL как в верхнем, так и в нижнем регистре.
    • RewriteRule определяет конкретное правило.
    • Первая строка символов после RewriteRule определяет, как выглядит исходный URL-адрес. В конце этой статьи есть более подробное объяснение специальных символов.
    • Вторая строка после RewriteRule определяет новый URL-адрес. Это относится к корневому каталогу документа (html). / означает сам каталог html, также можно указать подпапки.
      • $1 в конце соответствует части в скобках () из первой строки. По сути, это гарантирует, что подстраницы будут перенаправлены на одну и ту же подстраницу, а не на главную страницу.
    • [R=301,L] — это выполняет перенаправление 301, а также предотвращает влияние любых последующих правил перезаписи на этот URL (хорошая идея добавить после последнего правила). Он находится на той же строке, что и RewriteRule, в конце.

    Преобразовать URL в нижний регистр с помощью Rewrite Map

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

    www.example.com/recIPes становится www.example.com/recipes

    Примечание. Поскольку это правило требует редактирования файла конфигурации на уровне сервера, пользователи Grid и Managed WordPress не смогут реализовать это правило.

    Чтобы это работало правильно, вы также должны добавить директиву в ваш файл vhost (httpd.conf):

     
            RewriteMap lc int:tolower
     
    •  Для Plesk: перейдите в раздел Домены > example.com > Настройки веб-хостинга > Дополнительные директивы Apache и разместите приведенный выше код.

    Затем откройте файл .htaccess и добавьте следующие строки:

     RewriteEngine On
    RewriteCond %{REQUEST_URI} [A-Z]
    Правило перезаписи. ${lc:%{REQUEST_URI}} [R=301,L] 

    Примечание: вместо использования RewriteMap для преобразования URL-адресов в нижний регистр Apache рекомендует использовать mod_spelling для игнорирования чувствительности к регистру.

    Тест

    Перейдите к своему домену, используя комбинацию прописных и строчных букв.

     Пояснение кода

    • RewriteEngine On включает mod_rewrite.
    • RewriteCond %{REQUEST_URI} [A-Z] — получает введенный адрес.
    • Правило перезаписи . ${lc:%{REQUEST_URI}} – использует переменную lc, добавленную в файл vhost, для преобразования всех символов в нижний регистр.
    • [R=301,L] — выполняет перенаправление 301, а также предотвращает влияние любых последующих правил перезаписи на этот URL (хорошая идея добавить после последнего правила). Он находится на той же строке, что и RewriteRule, в конце.
    • 9.*$ означает «соответствовать чему угодно и чему угодно». Это полезно, если вы не знаете, что ваши пользователи могут вводить в качестве URL-адреса.
  • () указывает, какую часть сохранить для повторного использования в переменной $1 во второй строке. Это полезно для обработки запросов на определенные файлы, которые должны совпадать в старой и новой версиях URL.

Дополнительные сведения о регулярных выражениях см. на сайте perl.org.

Устранение неполадок

404 Не найдено

Внимательно изучите новый URL-адрес в браузере. Соответствует ли он файлу, существующему на сервере в новом расположении, указанном правилом перезаписи? Возможно, вам придется сделать правило перезаписи более широким (возможно, вы сможете удалить $1 из второй строки). Это направит перезапись на главную страницу индекса, указанную во второй строке. Или вам может потребоваться скопировать файлы из старого местоположения в новое.

Если URL просто неправильный (например, http://example.com/folder1//file.html — обратите внимание на две /s), вам нужно будет пересмотреть свой синтаксис. (mt) Media Temple не поддерживает устранение неполадок синтаксиса.

Бесконечный URL-адрес, тайм-аут, цикл перенаправления

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *