Parsing html as php htaccess: Parsing HTML files as PHP

(.*)$ http://site.ru/$1 [R=301,L]

Содержание

Шпаргалка по .htaccess – База знаний Timeweb Community

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

Для чего нужен .htaccess

.htaccess позволяет создать собственную конфигурацию управлением сервера Апач в директориях или настройках хостинга.

Правила .htaccess распространяются на все директории, где расположен файл, кроме директорий, где расположен собственный .htaccess.

Файл .htaccess считывается сервером Апач при каждом обращении, поэтому все изменения входят в силу сразу, после изменения.

Глобальные настройки сервера Апач могут содержать запрет на исполнение некоторых команд, обычно это вызывает ошибку 500. Также подобную ошибку может вызывать неправильный синтаксис или ошибка, например пропуск пробела.

Запрет доступа для определенных IP-адресов или диапазонов IP-адресов

Запрет доступа с IP-адреса 123.

123.123.123.


Order Deny,Allow
Deny from 123.123.123.123

Если не указывать последние цифры адреса, то запрет будет распространяться на весь диапазон 123.123.123.0 — 123.123.123.255.


Order Deny,Allow
Deny from 123.123.123

Разрешаем доступ только с определенных IP-адресов


Order Deny,Allow
Deny from all
Allow from 123.123.123.123

Принудительное задание кодировки

Иногда требуется очистка кэша браузера.

Отмена перекодировки сервером

Создание собственных страниц с сообщениями об ошибках

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

(.*)$ — [F,L]

Бытует легенда, что происхождения названия сервера Апач происходит не от названия индейского племени. Когда сервер был еще в самом начале пути, группа энтузиастов небольшие дополнения к коду, патчи (англ – patch), и «a patchy server» превратилось в Апач, а знаменитое перо на логотипе появилось позже.

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

Статья писалась эпизодическими «набегами», так что если увидите ошибку, поправьте.

Мой аккаунт на Marketplace — https://timeweb.com/ru/community/marketplace/bashkov-vladislav, обращайтесь

.htaccess

15.10.2014

Почему то на просторах рунета информация о локальной настройки веб-сервера Apache посредством конфигурационного файла .htaccess приводится как то не полно и однобоко. В основном приводятся примеры (часто не рабочие) или сухой перевод англоязычной документации.

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

Редиректы

Редиректы осуществляются с помощью модуля mod_rewrite. Задаются правила преобразований в виде следующей конструкции:


<IfModule mod_rewrite.c>
  Options +FollowSymLinks
  RewriteEngine On

  [СЮДА ПИШЕМ ПРАВИЛА]  

</IfModule>

Правила преобразования записываются в таком виде:


RewriteCond [СТРОКА ДЛЯ СРАВНЕНИЯ] [УСЛОВИЕ] [ФЛАГИ]
RewriteCond [СТРОКА ДЛЯ СРАВНЕНИЯ] [УСЛОВИЕ] [ФЛАГИ]
RewriteRule [ШАБЛОН] [СТРОКА ПОДСТАНОВКИ] [ФЛАГИ]

Строки RewriteCond — задают условия для срабатывания следующего за ними правила RewriteRule. Условий может быть несколько, они накладываются по правилу

AND. Но можно изменить правило на OR с помощью флага OR.

В качестве [СТРОКИ ДЛЯ СРАВНЕНИЯ] могут использоваться различные переменные. Ссылка на полный список Я приведу только те, которые нужны чаще всего:

%{REQUEST_URI} Строка запроса (без доменного имени, и GET параметров), пример «/server/htaccess/»
%{HTTP_HOST} Доменное имя, например «max22.ru»
%{QUERY_STRING}Строка GET параметров

[УСЛОВИЕ] также как и [ШАБЛОН] представляют собой perl совместимое регулярное выражение, с некоторыми дополнениями, позволяющими например проверить файл ли это, или существующий url.

[ФЛАГИ] Флаги пишутся в квадратных скодках через запятую: [NC,OR]. Флаги для условий:

NC
Регистронезависимая проверка
OR Условие сопостовляется с остальными про правилу ИЛИ

Подвыражения в регулярных выражениях (заключенные в скобки), доступны для вставки в [СТРОКУ ПОДСТАНОВКИ], обращаться к подвыражениям нужно так: %N — для подвыражений в условиях (RewriteCond) и $N — для подвыражений в правилах (RewriteRule), где N — порядковый номер подвыражения.

RewriteRule — правило подстановки. Если запрос подходит под вышестоящие проверки и [ШАБЛОН], то применяется правило подстановки. Здесь регулировать поведение также можно с помощью флагов. Флаги есть разные, приведу наиболее часто используемые:

NC Регистронезависимая проверка
R=301
Будет редирект с кодом 301, можно указать другой код
L Это последнее правило, больше не применять правил преобразований

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

Внимание! Браузеры кешируют редиректы!!!

Причем обычные сочетания типа Ctrl+F5 или Ctrl+R не помагают. Я во время тестирования каждый раз открываю страницу в НОВОМ окне в режиме инкогнито. news/happy.* /news.html [L]

Иногда требуется, чтобы был редирект без смены адреса, т.е. реврайт без редиректа. Для этого просто не указываем флаг редирект (R), и получаем желаемый результат, теперь по адресу

news/happy получим news.html, а в адресной строке останется news/happy

Редирект от GET параметров

Например, нужно что бы со страницы /?action=page&id=15 был редирект на /page/15/:


RewriteCond %{QUERY_STRING} action=page [NC]
RewriteCond %{QUERY_STRING} id=(\d+) [NC]
RewriteRule .* /page/%1/? [R=301,L]

Поясню, первым условиям проверяем что есть get параметр action=page, вторым условием проверяем что id равно числу. Эти условия нельзя объединять, т.к. параметры могут идти и наоборот, т.е. index.php?action=page&id=15 и index.php?id=15&action=page должны быть равноценны. Но и наконец правило, там все обычно, кроме знака вопрос (?) на конце.

$ /about/ [R=301,L]

Если мне кто — нибудь расскажет почему эти примеры работают крест накрест, а обратно не работают — буду очень рад.

что это такое, как правильно создать и настроить

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

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

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

Возможности и для чего нужен

В данном файле сайтостроители могут:

  • Настраивать директивы простого перенаправления (редиректы). Это позволит после смены домена отправить посетителя со страницы предыдущего сайта на новый проект.
  • Переадресовывать с URL, где есть www, на домен без www. Или же на https после того, как установите ssl сертификат.
  • Описывать ошибки. В их числе и ошибка 404 с заменой на необходимую страницу.
  • Кэширование файлов. Делается с целью ускорения работы веб-ресурса.
  • Создавать ЧПУ. Это «Человеко-понятные УРЛы», то есть, формируются ссылки, понятные для интернет-пользователей.
  • Изменять исходный код страниц.
  • Управлять доступом к файлам и директориям при помощи паролей.
  • Задавать индексный файл.
  • Открывать и закрывать доступ с определенных IP-адресов.
  • Управлять поисковыми ботами на сайте.
  • Настраивать директивы сложного направления.

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

Конфигурации сервера изменяются только с использованием директив (команд), включающих в себя «ключ» и «значение» для него. Все самые важные директивы, позволяющие управлять сервером, находятся в основном файле конфигурации, называющимся httpd.conf. Проблема в том, что у рядового пользователя нет возможности получить к нему доступ, так как там находится большое количество параметров, от которых зависит работоспособность всего сервера. Вот почему актуален .htaccess, позволяющий менять некоторые директивы в главном файле.

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

Где находится .htaccess

Можно с легкостью проверить, есть ли у вас служебный файл. От многих других документов он отличается тем, что имеет только расширение в виде названия из слова, тогда как самого названия нет. Да, мы все привыкли видеть файлы с названием из слова, и расширением после точки, которое состоит всего из 2-3 букв. Но пустые названия позволяют делать файлы и папки «скрытыми», с открытым исходным кодом. Из этого следует вывод, что .htaccess для обычных пользователей остается невидимым, поэтому они не смогут его изменить.

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

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

Если вы не найдете документ по указанному пути, то создайте собственный. Может случиться так, что на экране появится ошибка. Значит, данный хостер запретил создавать служебный файл.

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

Как правильно создать .htaccess

Для этого вам понадобится самый обычный текстовый редактор, к примеру, Блокнот, который есть на любом ПК:

  1. Откройте Блокнот, ничего в нем не пишите.
  2. Выберите пункт «Файл» и нажмите «Сохранить как».
  3. Появится окно, где напротив пункта «Тип файла» выберите «All types» или «Все файлы».
  4. В строке «Имя файла» введите .htaccess и кликните на «Сохранить».

Далее перепроверьте, создан ли документ правильно. Обязательно посмотрите, не сохранили ли вы его как .htaccess.txt. Затем загрузите файл в корневую папку сервера, и если не отобразится ошибка 500, значит, вы все сделали правильно.

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

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

Рассмотрим самые популярные команды для .htaccess.

Редирект

Эти директивы используются с завидной регулярностью. Они позволяют перенаправить посетителя со старого URL на новую страницу. Это возможно благодаря 301-редиректу. Достаточно в код файла вписать:

Redirect 301 /старый_URL.html http://www.название_вашего_сайта.ru/новый_URL.html

В целом директива будет отображена в таком виде:

Redirect [status] URL_LOCAL URL_REDIRECT

URL_LOCAL – это старый адрес, с которого осуществляется перенос пользователя.

URL_REDIRECT – новый URL, куда переносится страница.

В поле [status] могут быть следующие значения:

  1. 301 – страница перенесена навсегда.
  2. 302 – страница перенесена на время.
  3. 303 – смотрите другую страницу.
  4. 410 – страница удалена.

Mod_rewrite (директивы сложного переноса)

Этот модуль содержится в Apache. В нем есть изобилие самых разных директив для расширенного управления адресами. К основным из них относятся:

1. Указание основного зеркала

Предназначен для того, чтобы преобразовать домен с www на URL без www. (.*)$ http://www.my-site.ru/$1 [R=301,L]

5. Запретные команды для поискового бота

В .htaccess, так же, как и в robots.txt, можно закрыть доступ к сайту для роботов поисковых систем:

RewriteEngine on
RewriteCond %{USER_AGENT} Googlebot
RewriteRule .* - [F] # F – выдает ошибку 403 – запрещено для сканирования

Обработка ошибок

Практически любой интернет-пользователь встречался с ошибкой 404 not found (страница не найдена или удалена). Но есть огромное количество других ошибок, о которых вы наверняка не слышали.

В служебном файле вы можете прописать файл для его отображения во время ошибки. Но предварительно необходимо создать тот же файл в html расширении, и прописать в нем, в чем заключается эта ошибка. Затем, в зависимости от используемой ошибки, внесите в кодировку .htaccess:

ErrorDocument 404 /siteerror404.html

Индексные документы

Когда посетитель заходит на сайт, сразу же открывается индексный файл index.xml. Вы можете заменить индексную страницу на любую другую, дополнив код:

DirectoryIndex name.xml

Либо добавить несколько таких страниц, и поисковик будет находить их в соответствующей последовательности:

DirectoryIndex index.html index.php index.pl

Указание кодировки

Данная функция нужна, чтобы текст отображался на экране пользователя правильно. Иначе вместо нормальной читабельной страницы он будет видеть непонятные символы. Сегодня широко распространена кодировка: Windows-1251 – Кириллица и UTF-8 – двухбайтовая кодировка. Для выбора кодировки в служебном документе, применяется директива:

AddDefaultCharset WINDOWS-1251

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

CharsetSourceEnc WINDOWS-1251

Указание паролей для директорий

Для этого в закрываемом каталоге пропишите:

AuthName "Need password" #сообщение для запроса пароля
AuthType Basic #тип аутентификации
AuthUserFile /passwords/. psd #имя файла, содержащее пароли для входа
Require valid-user #имя пользователей, которым открыт доступ

Доступ к файлам и директориям

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

Deny from all

Для запрета просмотра определенного файла, например, test.php:

<Files test.php>
deny from all
</Files>

Открыть просмотр для конкретного IP, и при этом закрыть доступ остальным, позволяет команда:

<Files "passwd.html">

Order Deny,Allow
Deny from all
Allow from 12.345.678.90
</Files>

12.345.678.90 – пример IP-адреса (здесь нужно указать нужный вам IP).

Заключение

Как видите, служебный файл .htacces является одним из самых важных инструментов для полноценной работоспособности веб-ресурса. И ознакомившись с его возможностями, вы наверняка удивились, почему раньше знали об этом файле мало. Это эффективный инструмент для того, чтобы SEO-специалисты и программисты могли вносить изменения в конфигурации веб-сервера для определенных сайтов, не влияя на сам сервер.

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

Как задать кодировку в htaccess

Вы здесь: Главная — PHP — PHP Основы — Как задать кодировку в htaccess

Одна из самых частых проблем сайта — это его кодировка. И несмотря на это многие Web-мастера продолжают утверждать, что браузер сам выбирает кодировку. Действительно, он выбирает кодировку сам, но делает это не всегда правильно. Вот это и есть самая распространнёная ошибка с кодировкой: сайт в кодировке, допустим, UTF-8, а браузер настойчиво выбирает windows-1251. Вот как задать жёстко кодировку через файл htaccess, я расскажу в этой небольшой статье.

Для того, чтобы задать кодировку файла в htaccess достаточно написать в нём всего одну строчку:

AddDefaultCharset UTF-8

Если Вам нужна windows-1251, то тогда так:

AddDefaultCharset WINDOWS-1251

Всего одна строчка и теперь браузер, независимо от своего предпочтения, будет выбирать указанную кодировку. Сразу говорю, данный способ — это действительно мощный. Вы должны понимать, что раз браузер неправильно распознаёт кодировку Вашего сайта (игнорируя даже мета-тег «ContentType«), значит, на то есть свои причины, поэтому внимательно проверьте: везде ли всё хорошо отображается.

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

  • Создано 09.07.2011 16:32:47
  • Михаил Русаков
Предыдущая статья Следующая статья

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:
    <a href=»https://myrusakov. ru» target=»_blank»><img src=»https://myrusakov.ru/images/button.gif» alt=»Как создать свой сайт» /></a>

    Она выглядит вот так:

  2. Текстовая ссылка:
    <a href=»https://myrusakov.ru» target=»_blank»>Как создать свой сайт</a>

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):
    [URL=»https://myrusakov.ru»]Как создать свой сайт[/URL]

Как создать файл .htaccess и несколько полезных кодов

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

Как создать файл .htaccess

У некоторых сайтов уже по умолчанию есть .htaccess. Его создает система управления сайтом или как многие называют — движок. Тот же WordPress сам создает по умолчанию этот файл, который по сути пуст и в нем нет кода, только две строки с комментариями.

Если же у Вас нет такого файла, то вы можете с легкостью его создать. Он должен находится в корневой папке Вашего сайта. Вот несколько шагов в создании:

  • 1. Открываем текстовый редактор или тот который используете для верстки, советую Notepad++, если же он Вам не знаком, то обычный Блокнот.
  • 2. Ничего в нем не пишем и просто сразу сохраняем нажав на пункт меню «Файл», выбрать «Сохранить как».
  • 3. В открывшемся окне, там где стоит выбор «Тип файла» выбрать «Все файлы» или «All files»
  • 4. В строке, где нужно указать имя, нужно прописать .htaccess
  • Нажать на кнопку«Сохранить», чтобы завершить создание.

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

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

Как указать кодировку сайта в .htaccess

Если Вам нужно указать кодировку в .htaccess, то Вам нужно открыть его и добавить всего лишь одну строку кода, который укажет кодировку. Для UTF-8:


AddDefaultCharset UTF-8

для windows-1251:


AddDefaultCharset CP1251

Как запретить доступ к определенным файлам или самому .htaccess

Если у Вас возникла надобность нужда в том, чтобы запретить посетителям доступ к определенным файлам или .htaccess то добавьте следующий код:


<Files .htaccess>
 order allow,deny
 deny from all
 </Files>

Как заблокировать доступ к файлам определенного типа в . htaccess


<FilesMatch ".(htaccess|htpasswd|ini|phps|fla|psd|log|sh)$">
 Order Allow,Deny
 Deny from all
 </FilesMatch>

Как запретить просмотр директорий в .htaccess

Если у Вас возникла надобность в том, чтобы запретить посетителям просматривать структуру вашего сайта, то добавьте следующий код:


Options -Indexes

Если, Вам наоборот нужно открыть доступ к просмотру директорий, то поможет следующий код.


Options All +Indexes

Как ускорить время загрузки сайта за счет сжатия файлов

Можно сжимать любые файлы, например, для сжатия HTML-файлов нужно добавить вот такую вот строку


AddOutputFilterByType DEFLATE text/html

Если же это например текстовый файл, то надо так:


AddOutputFilterByType DEFLATE text/plain

Для JavaScript:


AddOutputFilterByType DEFLATE application/javascript

Есть код, который одновременно сожмет все javaScript, HTML и CSS файлы при помощи GZIP. http(s)?://(www\.)?yourdomain.com [NC] RewriteRule \.(jpg|jpeg|png|gif)$ — [NC,F,L]

yourdomain.com — замените на домен Вашего сайта, чтобы скрипт работал.

Как заблокировать посетителей, которые пришли из определенного сайта.

Если для Вас имеет значение то, чтобы посетители какого-то сайте не переходили на Ваш сайт, так сказать, ограничить трафик из определенного домена, Вам поможет, вот такой вот не хитрый код:


<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_REFERER} site1.com [NC,OR]
RewriteCond %{HTTP_REFERER} site2.com [NC,OR]
RewriteRule .* - [F]
</ifModule>

Как видите, можно блокировать сразу с нескольких добавляя строки, меняя только домены.

Кэширование файлов в .htaccess

Кэширование файлов помогает ускорить работу Вашего сайта. Добавьте код, в котором указаны расширения файлов, которые следует кэшировать.


<FilesMatch ". (flv|gif|jpg|jpeg|png|ico|swf|js|css|pdf)$">
Header set Cache-Control "max-age=2592000"
</FilesMatch>

Иногда бывает, что файлы не включены в список, но всеравно кэшируются браузером. Если таким файлам надо отключить кэширование, то код будет другим и в нем указываются расширения.


<FilesMatch ".(pl|php|cgi|spl|scgi|fcgi)$">
Header unset Cache-Control
</FilesMatch>

Как изменить главную страницу в .htaccess

Стандартной страницей загрузки являются страницы — index.html, index.php, index.htm.


DirectoryIndex newpage.html

Просто укажите новую страницу, вместо newpage.html.

Как заблокировать доступ к сайту по IP адресу

Про данный способ, можете прочитать в этой статье — Как заблокировать доступ к сайту по IP адресу

Как убрать index.php, index.html из URL адреса

Этот способ тоже описан в статье — Как убрать index. index \.- [L] RewriteRule. index.php [L] # КОНЕЦ WordPress

Наверх ↑

Наверх ↑

Опции № Опции

Любые параметры, которым предшествует + , добавляются к действующим в настоящее время параметрам, а любые параметры, которым предшествует , удаляются из действующих в настоящее время параметров.

Возможные значения для директивы Options представляют собой любую комбинацию:

Нет

Все опции выключены.

Все

Все опции, кроме MultiView.Это значение по умолчанию.

ExecCGI

Разрешено выполнение сценариев CGI с использованием mod_cgi.

FollowSymLinks

Сервер будет переходить по символическим ссылкам в этом каталоге.

Включает

Разрешены включения на стороне сервера, предоставляемые mod_include.

Включает NOEXEC

Включения на стороне сервера разрешены, но #exec cmd и #exec cgi отключены.

Индексы

URL соответствует каталогу, а не DirectoryIndex — форматированному списку каталога.

Мультипросмотр

Согласованное содержимое «MultiViews» разрешено с использованием mod_negotiation.

SymLinksIfOwnerMatch

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

Это отключит все параметры, а затем включит только FollowSymLinks, что необходимо для mod_rewrite.

 Опции Нет
Параметры FollowSymLinks
 

Наверх ↑

DirectoryIndex # DirectoryIndex

DirectoryIndex устанавливает файл, который Apache будет обслуживать при запросе каталога.

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

 DirectoryIndex index.php index.html /index.php
 

Наверх ↑

DefaultLanguage # DefaultLanguage

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

 DefaultLanguage ru
 

Наверх ↑

Кодировка по умолчанию # Кодировка по умолчанию

Установите кодировку символов по умолчанию, отправляемую в заголовке HTTP. См .: Установка информации о кодировке в .htaccess

 AddDefaultCharset UTF-8
 

Установить кодировку для определенных файлов

 AddType 'text / html; charset = UTF-8 '.html
 

Набор для конкретных файлов

 AddCharset UTF-8 .html

 

Наверх ↑

ServerSignature # ServerSignature

Директива ServerSignature позволяет конфигурировать завершающую строку нижнего колонтитула в документах, созданных сервером. При желании добавьте строку, содержащую версию сервера и имя виртуального хоста, на страницы, созданные сервером (документы внутренних ошибок, списки каталогов FTP, вывод mod_status и mod_info и т. Д., Но не документы, созданные CGI или пользовательские документы ошибок).

по телефону

добавляет строку с номером версии сервера и ServerName обслуживающего виртуального хоста

Off

подавляет строку нижнего колонтитула

Электронная почта

создает ссылку mailto: на ServerAdmin указанного документа

.
 SetEnv SERVER_ADMIN admin @ site.com
Сервер Подпись Электронная почта
 

Наверх ↑

Принудительная загрузка файлов # Принудительная загрузка файлов

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

 Приложение AddType / поток октетов .avi .mpg .mov .pdf .xls .mp4
 

Наверх ↑

Сжатие HTTP # Сжатие HTTP

Директива AddOutputFilter сопоставляет расширение расширения имени файла с фильтрами, которые будут обрабатывать ответы от сервера перед их отправкой клиенту.Mozilla / 4 \ .0 [678] no-gzip BrowserMatch \ bMSIE! No-gzip! Gzip-only-text / html

Принудительное сжатие для определенных файлов

 SetOutputFilter DEFLATE

 

Наверх ↑

Директива Header позволяет отправлять заголовки HTTP для каждого запроса или только для определенных файлов. Вы можете просматривать HTTP-заголовки сайтов с помощью Firebug, Chrome Dev Tools, Wireshark или онлайн-инструмента.

 Заголовочный набор X-Pingback "http://www.askapache.com/xmlrpc.php"
Набор заголовков Content-Language "en-US"
 

Наверх ↑

Это отключит заголовки HTTP, всегда используя . будет очень стараться удалить их.

 Заголовок не установлен Pragma
Заголовок всегда отключен WP-Super-Cache
Заголовок всегда отключен X-Pingback
 

Наверх ↑

Защита паролем логина # Защита паролем логина

Это очень полезно для защиты файла wp-login.php . Вы можете использовать этот генератор htpasswd.

Базовая аутентификация

 AuthType Basic
AuthName "Защищено паролем"
AuthUserFile /full/path/to/.htpasswd
Требовать действительного пользователя
Удовлетворить все

 

Дайджест-аутентификация

 Дайджест AuthType
AuthName "Защищено паролем"
AuthDigestDomain / wp-login.php https://www.askapache.com/wp-login.php
AuthUserFile /full/path/to/.htpasswd
Требовать действительного пользователя
Удовлетворить все

 

Наверх ↑

Требуется особый IP # Требуется особый IP

Это способ разрешить доступ только определенным IP-адресам.

 ErrorDocument 401 по умолчанию
ErrorDocument 403 по умолчанию


Заказать отказать, разрешить
Запретить всем
Разрешить от 198.101.159.98 localhost

 

Наверх ↑

Защита конфиденциальных файлов # Защита конфиденциальных файлов

Это запрещает любой веб-доступ к вашему файлу wp-config, error_logs, php.ini и htaccess / htpasswds.

 Заказать отклонить, разрешить
Запретить всем

 

Наверх ↑

Требовать SSL # Требовать SSL

Это приведет к принудительному использованию SSL и потребует точного имени хоста, иначе будет выполнено перенаправление на версию SSL. Полезно в файле /wp-admin/.htaccess .

 SSLOptions + StrictRequire
SSLRequireSSL
SSLRequire% {HTTP_HOST} eq "www.wordpress.com"
ErrorDocument 403 https://www.wordpress.com
 

Наверх ↑

Наверх ↑

флагов RewriteRule — HTTP-сервер Apache версии 2.4

В этом документе обсуждаются флаги, доступные для RewriteRule директива, с подробными пояснениями и примерами.

См. Также

A RewriteRule может иметь его поведение изменено одним или несколькими флагами. Флаги включены в квадратные скобки в конце правила, и несколько флагов разделяются запятыми.

 Цель шаблона RewriteRule [Flag1, Flag2, Flag3] 

Каждый флаг (за некоторыми исключениями) имеет краткую форму, например CO , а также более длинную форму, такую ​​как cookie .Хотя чаще всего используют краткую форму, рекомендуется ознакомиться с длинная форма, чтобы вы запомнили, что должен делать каждый флаг. Некоторые флаги принимают один или несколько аргументов. Флаги не чувствительны к регистру.

Флаги, которые изменяют метаданные, связанные с запросом (T =, H =, E =) не влияют на каталог и контекст htaccess, когда подстановка (кроме «-») выполняется во время того же цикла обработки перезаписи.

Здесь представлены все доступные флаги, а также пример о том, как вы можете их использовать.

Флаг [B] предписывает RewriteRule избегать буквенно-цифровых символов перед применением преобразования.

В версии 2.4.26 и более поздних можно ограничить экранирование определенными символами. в обратных ссылках, перечислив их: [B = # ?;] . Примечание: пространство можно использовать в списке символов для экранирования, но нельзя последний символ в списке.

mod_rewrite должен отменять экранирование URL-адресов перед их сопоставлением, поэтому обратные ссылки не экранируются во время их применения.поиск /(.*)$ «» /search.php?term=$1 «

Если введен поисковый запрос ‘x & y / z’, браузер закодирует его как ‘x% 20% 26% 20y% 2Fz’, делая запрос ‘search / x% 20% 26% 20y% 2Fz’. Без B флаг, это правило перезаписи будет отображаться на search.php? term = x & y / z, который не является действительным URL-адресом, поэтому будет закодирован как search.php? Term = x% 20 & y% 2Fz = , что не соответствует задумке.

Если для этого же правила установлен флаг B, параметры перекодируются. перед передачей в выходной URL-адрес, что приведет к правильному сопоставлению с / поиск. поиск /(.*)$ "" /search.php?term=$1 "[B, PT]

Обратите внимание, что вам также может потребоваться установить AllowEncodedSlashes на на , чтобы получить это конкретный пример для работы, поскольку httpd не допускает закодированные косые черты в URL-адресах и возвращает 404, если видит его.

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

Альтернативой этому флагу является использование RewriteCond для захвата против% {THE_REQUEST}, который будет захватывать строки в закодированной форме.

Флаг [BNP] предписывает RewriteRule экранировать пробел в обратной ссылке на% 20, а не на "+". Полезно, когда обратная ссылка будет использоваться в компоненте пути, а не в строке запроса.

Этот флаг доступен в версии 2.4.26 и новее.

Флаг [C] или [цепочка] указывает, что RewriteRule привязано к следующему правило. То есть, если правило совпадает, то оно обрабатывается как обычно и контроль переходит к следующему правилу.Однако, если он не совпадает, то следующее правило и любые другие правила, связанные вместе, являются пропущено.

Флаг [CO] или [cookie] позволяет вам установить cookie, когда в частности RewriteRule совпадения. Аргумент состоит из трех обязательных полей и четырех необязательных. поля.

Полный синтаксис флага, включая все атрибуты, следующий: следует:

[CO = NAME: VALUE: DOMAIN: Life: path: secure: httponly]

Если в любом из полей cookie требуется буквальный символ ':', доступен альтернативный синтаксис.Чтобы выбрать альтернативный синтаксис, файл cookie «Имя» должно начинаться с символа ';' символ, а разделители полей должны быть указано как ';'.

[CO =; NAME; VALUE: MOREVALUE; DOMAIN; Life; path; secure; httponly]

Вы должны указать имя, значение и домен для файла cookie.

Домен
Домен, для которого вы хотите, чтобы cookie был действительным. Это может быть имя хоста, например www.example.com , или это может быть домен, например, .example.com . Это должно быть не менее двух частей разделенные точкой. То есть это может быть не просто .com или .net . Файлы cookie такого типа запрещены файлом cookie. модель безопасности.

При желании вы также можете установить следующие значения:

Срок службы
Время, в течение которого файл cookie будет сохраняться в минутах.
Значение 0 указывает, что файл cookie будет сохраняться только в течение текущий сеанс браузера. Это значение по умолчанию, если нет указано.
Путь
Путь на текущем веб-сайте, для которого cookie действителен, например / customers / или / files / download / .
По умолчанию установлено значение /, то есть весь Веб-сайт.
Безопасность
Если установлено значение secure , true или 1 , куки будет разрешено переводить только через безопасный (https) соединения.
httponly
Если установлено значение HttpOnly , true или 1 , для файла cookie будет установлен флаг HttpOnly , это означает, что файл cookie недоступен для кода JavaScript на браузеры, поддерживающие эту функцию./index\.html "" - "[CO = frontdoor: yes: .example.com: 1440: /]

В приведенном примере правило не перезаписывает запрос. Цель перезаписи "-" указывает mod_rewrite передать запрос через без изменений. Вместо этого он устанавливает cookie называется «входной дверью» до значения «да». Файл cookie действителен для любого хоста в домене .example.com . Срок его действия истекает в 1440 году. минут (24 часа) и возвращается для всех URI.

Флаг DPI заставляет часть PATH_INFO перезаписанного URI быть отброшен.

Этот флаг доступен в версии 2.2.12 и новее.

В контексте каталога каждый URI RewriteRule сравнивается с конкатенацией текущих значений URI и PATH_INFO.

Текущий URI может быть начальным URI по запросу клиента, результат предыдущего раунда обработки mod_rewrite или результат предыдущее правило в текущем раунде обработки mod_rewrite.

Напротив, PATH_INFO, который добавляется к URI перед каждым правило отражает только значение PATH_INFO перед этим раундом обработка mod_rewrite.Как следствие, если большие порции URI сопоставляются и копируются в замену в нескольких RewriteRule , без учета какие части URI пришли из текущего PATH_INFO, последнего К URI может быть добавлено несколько копий PATH_INFO.

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

С помощью флага [E] или [env] вы можете установить значение среды переменная. Обратите внимание, что некоторые переменные среды могут быть установлены после правила запускается, таким образом сбрасывая то, что вы установили. Увидеть Документ Environment Variables для более подробной информации о том, как Environment переменные работают.

Полный синтаксис этого флага:

 [E = VAR: VAL]
[E =! VAR] 

VAL может содержать обратные ссылки ( $ N или % N ), которые расширяются.

Использование краткой формы

, вы можете установить переменную среды с именем VAR в пустое значение.

Форма

позволяет отключить ранее установленную переменную среды с именем VAR .

Переменные среды могут затем использоваться в различных контексты, включая программы CGI, другие директивы RewriteRule или Директивы CustomLog.

В следующем примере для переменной среды с именем image устанавливается значение значение «1», если запрошенный URI является файлом изображения. Тогда это переменная среды используется для исключения этих запросов из доступа журнал.

 RewriteRule "\. (Png | gif | jpg) $" "-" [E = image: 1]
CustomLog "logs / access_log" в сочетании env =! Image 

Обратите внимание, что этот же эффект можно получить с помощью SetEnvIf . Эта техника предлагается как пример, а не как рекомендация.

Использование флага [END] завершает не только текущий раунд перезаписи. обработка (как [L]), но также предотвращает любую последующую перезапись обработка происходит в контексте каталога (htaccess).

Это не относится к новым запросам, полученным из внешних перенаправляет.

Использование флага [F] заставляет сервер возвращать статус 403 Forbidden код клиенту. Хотя то же самое поведение может быть достигнуто с помощью директива Deny , это обеспечивает большую гибкость при присвоении статуса "Запрещено".

Следующее правило запрещает файлы .exe скачано с вашего сервера.

 RewriteRule "\ .exe" "-" [F] 

В этом примере для цели перезаписи используется синтаксис «-», что означает что запрошенный URI не изменен.Нет причин переписывать на другой URI, если вы собираетесь запретить запрос.

При использовании [F] подразумевается [L], то есть возвращается ответ немедленно, и никакие дальнейшие правила не оцениваются.

Флаг [G] заставляет сервер возвращать статус 410 Gone с ответ. Это означает, что ресурс раньше был доступен, но его нет. доступно больше.

Как и в случае с флагом [F], вы обычно будете использовать синтаксис "-" для перезаписать цель при использовании флага [G]:

 RewriteRule «oldproduct» «-» [G, NC] 

При использовании [G] подразумевается [L], то есть возвращается ответ немедленно, и никакие дальнейшие правила не оцениваются.

Принудительно обрабатывает полученный запрос с указанным обработчик. Например, можно использовать это, чтобы заставить все файлы без расширение файла для анализа обработчиком php:

 RewriteRule "! \." "-" [H = application / x-httpd-php] 

Регулярное выражение выше - ! \. - подойдет любому запросу который не содержит литерала . персонаж.

Это также можно использовать для принудительного выполнения обработчика в зависимости от некоторых условий. Например, следующий фрагмент, используемый в контексте сервера, позволяет .(/source/.+\.php)s$ - будет соответствовать любому запросу, который начинается с / source / , за которым следует 1 или n символов, за которыми следует буквально .phps . Обратная ссылка Рефереры $ 1 к захваченному совпадению в круглых скобках обычного выражение.

Флаг [L] заставляет mod_rewrite прекратить обработку набор правил. В большинстве случаев это означает, что если правило соответствует, нет дальнейшие правила будут обработаны. Это соответствует последняя команда в Perl или команда break в С.Используйте этот флаг, чтобы указать, что следует применить текущее правило немедленно, не учитывая дальнейшие правила.

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

Поэтому важно, если вы используете директивы RewriteRule в одной из этих контекстах, в которых вы предпринимаете явные шаги, чтобы избежать зацикливания правил, а не рассчитывать только на флаг [L], чтобы завершить выполнение серии правила, как показано ниже.

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

Приведенный здесь пример перепишет любой запрос на index.php , предоставляя исходный запрос в виде строки запроса аргумент index.php , однако RewriteCond гарантирует, что если запрос уже для индекса .(. *) "" /index.php?req=$1 "[L, PT]

Флаг [N] заставляет набор правил начинать заново сверху, используя результат набора правил в качестве отправной точки. Использовать с особой осторожностью, так как это может привести к зацикливанию.

Флаг [Next] можно использовать, например, если вы хотите заменить определенная строка или буква неоднократно в запросе. Пример, показанный здесь заменит A на B везде в запросе и продолжит выполнение так что пока нет больше As на замену.

 RewriteRule "(. *) A (. *)" "$ 1B $ 2" [N] 

Вы можете думать об этом как о цикле и : шаблон все еще совпадает (т.е. пока URI все еще содержит A ), выполните эту замену (т.е. замените A с B ).

В версии 2.4.8 и новее этот модуль возвращает ошибку после 32000 итераций для защитить от непреднамеренного зацикливания. Альтернативное максимальное количество итерации можно указать, добавив к флагу N.

 # Будьте готовы заменять 1 символ на каждом проходе цикла
RewriteRule "(. +) [> <;] $" "$ 1" [N = 64000]
# ... или откажемся, если после 10 петель
RewriteRule "(. +) [> <;] $" "$ 1" [N = 10] 

Использование флага [NC] приводит к тому, что RewriteRule будет соответствовать в без учета регистра. То есть не важно, появятся ли буквы в соответствующем URI в верхнем или нижнем регистре.

В приведенном ниже примере любой запрос файла изображения будет проксироваться на ваш выделенный сервер изображений. /anchor/(.+) "" /bigpage.html#$1 "[NE, R]

В приведенном выше примере / anchor / xyz будет перенаправлен на /bigpage.html#xyz . Отсутствие [NE] приведет к # преобразуется в его эквивалент в шестнадцатеричном коде, % 23 , что будет затем приведет к возникновению ошибки 404 Not Found.

Использование флага [NS] предотвращает использование правила на подзапросы. Например, страница, включенная с использованием SSI (Сервер Side Include) - это подзапрос, и вы можете избежать перезаписи происходит по этим подзапросам.Также, когда mod_dir пытается найти информацию о возможных файлах каталога по умолчанию (например, index.html файлов), это внутренний подзапрос, и вы часто хотите избежать перезаписи таких подзапросов. В подзапросах это не всегда полезно и даже может вызвать ошибки, если применяется полный набор правил. Используйте этот флаг, чтобы исключить проблемные правила.

Чтобы решить, использовать ли это правило: если вы префикс URL-адресов CGI-скрипты, чтобы заставить их обрабатывать CGI-скрипт, это вероятно, вы столкнетесь с проблемами (или значительными накладными расходами) по подзапросам. В этих случаях используйте этот флаг.

Изображения, файлы javascript или файлы css, загруженные как часть HTML-страницы, не являются подзапросами - браузер запрашивает их как отдельный HTTP Запросы.

Использование флага [P] приводит к тому, что запрос обрабатывается mod_proxy , и обрабатывается через запрос прокси. За Например, если вы хотите, чтобы все запросы изображений обрабатывались серверной частью image server, вы можете сделать что-то вроде следующего:

 RewriteRule "/(.*)\.(jpg|gif|png)$" "http: // images.example.com/$1.$2 "[P] 

Использование флага [P] подразумевает [L] - то есть запрос немедленно проталкивается через прокси, и никакие следующие правила не будут считается.

Вы должны убедиться, что строка подстановки является допустимым URI (обычно начинается с http: // имя хоста ), который может быть обрабатывается mod_proxy . Если нет, вы получите ошибка прокси-модуля. Используйте этот флаг для достижения более мощная реализация директивы ProxyPass , для отображения удаленного содержимого в пространство имен локального сервера.

Предупреждение системы безопасности

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

Предупреждение о производительности

Использование этого флага запускает использование mod_proxy , без обработки постоянных соединений.Этот означает, что производительность вашего прокси будет лучше, если вы настроите его с помощью ProxyPass или ProxyPassMatch

Это связано с тем, что этот флаг запускает использование рабочего по умолчанию, который не обрабатывает объединение / повторное использование соединений.

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

Примечание: mod_proxy должен быть включен, чтобы использовать этот флаг.

Предполагается, что цель (или строка подстановки) в RewriteRule является путь к файлу по умолчанию.Использование флага [PT] заставляет его лечиться вместо этого как URI. То есть использование флага [PT] приводит к тому, что результат RewriteRule передается обратно через Сопоставление URL-адресов, так что сопоставления на основе местоположения, такие как Alias ​​, Redirect или ScriptAlias ​​, например, могут иметь шанс вступить в силу.

Если, например, у вас есть Псевдоним для / icons и указывает на него RewriteRule , вы должны используйте флаг [PT], чтобы убедиться, что Псевдоним оценивается.

 Псевдоним "/ icons" "/ usr / local / apache / icons"
RewriteRule "/pics/(. +)\.jpg$" "/icons/$1.gif" [PT] 

Пропуск флага [PT] в этом случае приведет к тому, что псевдоним будет игнорируется, в результате чего возвращается ошибка «Файл не найден».

Флаг PT подразумевает флаг L : перезапись будет остановлена ​​для передачи запроса на следующий этап обработки.

Обратите внимание, что флаг PT подразумевается для каждого каталога контексты, такие как разделов или в .htaccess файлов. Единственный способ обойти это переписать на - .

Когда URI замены содержит строку запроса, поведение по умолчанию из RewriteRule - удалить существующую строку запроса и замените ее вновь созданной. Использование флага [QSA] приводит к объединению строк запроса.

Рассмотрим следующее правило:

 RewriteRule "/pages/(.+)" "/page.php?page=$1" [QSA] 

С флагом [QSA] запрос / pages / 123? One = two будет сопоставлен с / страница. php? page = 123 и один = два . Без [QSA] флаг, этот же запрос будет сопоставлен с /page.php?page=123 - то есть существующая строка запроса будут отброшены.

Когда запрошенный URI содержит строку запроса, а целевой URI делает нет, по умолчанию RewriteRule копирует этот запрос строка в целевой URI. Использование флага [QSD] приводит к тому, что строка запроса быть отброшенным.

Этот флаг доступен в версии 2.4.0 и новее.

Использование [QSD] и [QSA] вместе приведет к тому, что [QSD] будет иметь приоритет.

Если целевой URI имеет строку запроса, поведение по умолчанию будет наблюдается - то есть исходная строка запроса будет отброшена и заменяется строкой запроса в цели RewriteRule URI.

По умолчанию первый (самый левый) вопросительный знак в замене отделяет путь от строки запроса. Использование флага [QSL] указывает RewriteRule вместо разделения два компонента с последним (крайним справа) вопросительным знаком.

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

Этот флаг доступен в версии 2.4.19 и новее.

Использование флага [R] вызывает перенаправление HTTP для браузера. Если указан полный URL (то есть, включая http: // servername / ), то на это будет выполнено перенаправление место расположения.В противном случае текущий протокол, имя сервера и номер порта. будет использоваться для генерации URL, отправленного с перенаправлением.

Может быть указан любой допустимый код статуса ответа HTTP , с использованием синтаксиса [R = 305] с кодом состояния 302, используемым по умолчанию, если ничего не указано. Указанный код состояния не требуется. обязательно должен быть код статуса редиректа (3xx). Однако, если код состояния находится за пределами диапазона перенаправления (300–399), то строка замены полностью отбрасывается, и перезапись останавливается, как если бы использовались L .

В дополнение к кодам состояния ответа вы также можете указать перенаправление статус с использованием их символических имен: temp (по умолчанию), постоянный , или см. Другой .

Вы почти всегда захотите использовать [R] вместе с [L] (то есть используйте [R, L]), потому что сам по себе флаг [R] добавляет http: // thishost [: thisport] в URI, но затем передает это перейти к следующему правилу в наборе правил, что часто может приводить к URI в предупреждениях запроса.

Флаг [S] используется для пропуска правил, которые вы не хотите запускать. В синтаксис флага пропуска [S = N ], где N означает количество правил, которые нужно пропустить (при условии, что RewriteRule соответствует). Это можно представить как goto в вашем наборе правил перезаписи. В следующем примере нам нужно только для запуска RewriteRule , если запрошенный URI не соответствует фактическому файлу.

 # Запрос несуществующего файла?
RewriteCond "% {REQUEST_FILENAME}" "! -F"
RewriteCond "% {REQUEST_FILENAME}" "! -D"
# Если да, пропустите эти два правила RewriteRules
RewriteRule ".? "" - "[S = 2]

RewriteRule "(. * \. Gif)" "images.php? $ 1"
RewriteRule "(. * \. Html)" "docs.php? $ 1" 

Этот метод полезен, потому что RewriteCond применяется только к RewriteRule немедленно после этого. Таким образом, если вы хотите применить RewriteCond к нескольким RewriteRule s, один из возможных способов - отмените эти условия и добавьте RewriteRule с флагом [Пропустить]. Вы можете используйте это для создания псевдо-if-then-else конструкций: последнее правило тогда предложение становится skip = N , где N - это количество правил в else-clause:

 # Файл существует?
RewriteCond "% {REQUEST_FILENAME}" "! -F"
RewriteCond "% {REQUEST_FILENAME}" "! -D"
# Создайте конструкцию if-then-else, пропустив 3 строки, если мы хотели перейти к строфе "else".RewriteRule ".?" «-» [S = 3]

# ЕСЛИ файл существует, то:
    RewriteRule "(. * \. Gif)" "images.php? $ 1"
    RewriteRule "(. * \. Html)" "docs.php? $ 1"
    # Пропустить строфу "else".
    RewriteRule ".?" «-» [S = 1]
# ELSE ...
    RewriteRule "(. *)" "404.php? File = $ 1"
# END 

Вероятно, проще выполнить такую ​​конфигурацию, используя вместо директив , и .

Устанавливает тип MIME, с которым будет получен ответ послал.Это имеет тот же эффект, что и директива AddType .

Например, вы можете использовать следующую технику для обслуживания Perl исходный код в виде обычного текста, если требуется определенным образом:

 # Обслуживать файлы .pl как обычный текст
RewriteRule "\ .pl $" "-" [T = text / plain] 

Или, возможно, если у вас есть камера, которая производит изображения в формате jpeg без расширения файлов, вы можете принудительно обслуживать эти изображения с помощью правильный тип MIME на основании их имен файлов:

 # Файлы с 'IMG' в имени являются изображениями jpg.RewriteRule "IMG" "-" [T = image / jpg] 

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

Если используется в контексте каталога, используйте только - (тире) в качестве замены для всего цикла обработки mod_rewrite , в противном случае MIME-тип, установленный этим флагом, будет утерян из-за внутреннего повторная обработка (включая последующие раунды обработки mod_rewrite).Флаг L может быть полезен в этом контексте для завершения текущий раунд обработки mod_rewrite.

Убедиться, что .htaccess и mod_rewrite работают должным образом

Перейти к навигации по документам

Примечание: В настоящее время вы читаете документацию по болту 3,7 . Ищем документацию для болта 4.0 вместо этого?

Bolt широко использует общую функцию, называемую «перезапись URL». Этот в основном означает, что вы можете запросить красивый URL-адрес, например / page / about-this-website в вашем браузере, и за кулисами ваш веб-сервер просто "переведет" это для запуска index.php с правильными параметрами, чтобы Bolt мог создать правильная страница для вас.

Это не работает сразу на всех веб-серверах, но - это требование для использования Bolt. Если вы читаете эту страницу, вероятно, вы находитесь в процесс настройки Bolt и после запроса первой страницы вы были перенаправлены на страницу / bolt / userfirst , где вы увидели следующее сообщение об ошибке:

Проблемы возникают при одной из трех следующих возможностей:

  • Вы потеряли файл .htaccess
  • Apache игнорирует .htaccess всего
  • Mod_rewrite не включен

Проверить, работает ли .htaccess

Самый простой способ проверить, использует ли apache ваш файл .htaccess или иначе игнорирует его, значит намеренно сломать его.

Отредактируйте файл .htaccess , чтобы в первой строке было "Test.":

  Тест.

# Установить обработчик по умолчанию
DirectoryIndex index.php index.html index.htm

...
  

Теперь, если вы обновите страницу в своем браузере, вы должны увидеть страницу с ошибкой, например это:

Если вы видите эту ошибку, это на самом деле хорошо ! Это означает, что Apache разбор файла .htaccess , и он обнаруживает ошибку, которую мы туда поместили! Так пока все хорошо!

Если вы выполняете , а не , вы видите «Внутренняя ошибка сервера», ваша установка Apache игнорирует .htaccess , и вам нужно это исправить. Обычно Apache игнорирует .htaccess из-за следующей конфигурации Apache AllowOverride none . Проверьте конфигурацию виртуального хоста и добавьте / измените AllowOverride All .

Пример:

  
        Индексы опций FollowSymLinks
        AllowOverride All
        Требовать все предоставлено
      

Если вы не уверены, что файл .htaccess существует и доступен для чтения, загрузите наш тестовый скрипт:

  • Загрузите сценарий здесь: htaccess_tester.php на GitHub
  • При необходимости переименуйте его в htaccess_tester.php .
  • Поместите его в папку, в которую вы положили Bolt.
  • Откройте его в браузере с URL-адресом.(так что убедитесь, что у вас нет доступа к нему как файл : // )
  • Если вы получили сообщение об ошибке, вам нужно будет исправить ее, убедившись, что .htaccess файл существует и доступен для чтения.

Это правильно:

Проверить, работает ли mod_rewrite

Чтобы проверить, правильно ли работает mod_rewrite , выполните следующие действия:

  • Загрузите сценарий здесь: htaccess_tester.php на GitHub
  • Переименуйте его в htaccess_tester.. * $ htaccess_tester.php
    • В браузере откройте / test с правильным доменным именем. Итак, это должно выглядит так: http: // localhost / test или http://example.org/test .
    • Если вы видите следующее, это работает! Если вы увидите что-то еще, вам понадобится чтобы исправить это.

    Это правильно:

    Мой htaccess не работает? Что делать? ¶

    Существует множество причин, по которым он может не работать в вашей системе, и эти Причины настолько разнообразны, что мы не можем дать исчерпывающее решение для этого.Что сказал, вот несколько указателей, которые могут помочь вам это исправить:

    Включите .htaccess в вашем httpd.conf или apache.conf

    Это необычно, но возможно, что .htaccess не включен на вашем сайте. если ты размещаете его самостоятельно, это достаточно легко исправить. Откройте свой httpd.conf или apache.conf в текстовом редакторе и найдите раздел :

      <Каталог "/ var / www / htdocs">
        AllowOverride Нет  

    Измените строку AllowOverride на:

      AllowOverride All  

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

    Если ваш сайт размещен в другом месте, проверьте панель управления (Plesk, DirectAdmin, CPanel, что угодно), чтобы посмотреть, можете ли вы включить там .htaccess . Если нет, свяжитесь ваш хостинг-провайдер сделает это за вас.

    Включить mod_rewrite в Apache¶

    Есть несколько способов включить mod_rewrite , если он еще не включен на вашей настройке.См. Эту ветку переполнения стека, чтобы узнать о различных способах сделать это. на разных настройках: Как включить mod_rewrite для Apache 2.2.

    Проверьте файлы журнала Apache¶

    Apache регистрирует лотов и файлов. Изучите журналы доступа и ошибок, созданные Apache, чтобы узнать, содержат ли они ценную информацию. Обычное место для этих files - это / var / log / apache2 / , но он может находиться по другому пути на вашем система. Проверьте свой файл apache .conf , чтобы узнать, где эти файлы могут скрываться.

    Включение базы перезаписи¶

    Если вы настраиваете Bolt в подпапке, возможно, вам придется раскомментировать строку для параметра RewriteBase .

    Изменение

      # Некоторые серверы требуют установки RewriteBase. Если да, выберите правильную папку.
      # RewriteBase /  
    С

    по:

      # Некоторые серверы требуют установки RewriteBase. Если да, выберите правильную папку.
      RewriteBase /  

    Переместите свой сайт на «верхний уровень»

    Если вы настраиваете Bolt в подпапке, и предыдущий совет не работает, вы может попробовать настроить Bolt в его собственном субдомене, поскольку обычно это дает меньше проблемы.Итак, вместо использования http://example.org/testingbolt настройте его как http://testingbolt.example.org/ .

    Свяжитесь с вашим хостингом

    Спросите своего веб-хостинга, что может быть не так. Чем больше информации вы им дадите, тем больше шанс, что они смогут вам помочь.

    Используйте предварительно настроенную сборку Apache¶

    Если вы настраиваете Apache на своем компьютере, и он оказывается сложно настроить, вам следует подумать об использовании XAMPP (Windows), MAMP (OS X) или AMPPS (Windows, OS X, Linux).

Posted in Php

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

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

Theme: Overlay by Kaira Extra Text
Cape Town, South Africa