Настройка файла htaccess

Как работает mod_rewrite. Флаг [L]

изменение запроса не заканчивается на последнем RewriteRule— Постойте, но ведь есть флаг , который останавливает обработку запроса mod_rewrite’ом!текущую итерацию

  1. Когда используется внешний редирект — или . В случае внешнего редиректа дальнейшая обработка запроса нежелательна (см. ниже про флаг ), и ее лучше остановить.
  2. Когда в .htaccess есть зацикливание, от которого не избавиться, и обработку запроса mod_rewrite’ом нужно принудительно прекратить. В этом случае используется специальная конструкция — см. в конце статьи советы на эту тему.

В результате выполнения всех RewriteRule запрос меняется таким образом, что конечный результат равен исходномуApache видит это и не запускает повторную обработку запросаБудет возвращен файл a.html

How directives are applied

The configuration directives found in a file
are applied to the directory in which the file
is found, and to all subdirectories thereof. However, it is important
to also remember that there may have been files
in directories higher up. Directives are applied in the order that they
are found. Therefore, a file in a particular
directory may override directives found in files
found higher up in the directory tree. And those, in turn, may have
overridden directives found yet higher up, or in the main server
configuration file itself.

Example:

In the directory we have a
file containing the following:

Options +ExecCGI

(Note: you must have «» in effect
to permit the use of the «» directive in
files.)

In the directory we have
a file containing:

Options Includes

Because of this second file, in the directory
, CGI execution is not
permitted, as only is in effect, which
completely overrides any earlier setting that may have been in
place.

Merging of .htaccess with the main
configuration files

As discussed in the documentation on Configuration Sections,
files can override the sections for
the corresponding directory, but will be overridden by other types
of configuration sections from the main configuration files. This
fact can be used to enforce certain configurations, even in the
presence of a liberal setting. For example, to
prevent script execution while allowing anything else to be set in
you can use:

<Directory "/www/htdocs">
    AllowOverride All
</Directory>

<Location "/">
    Options +IncludesNoExec -ExecCGI
</Location>

Troubleshooting

When you put configuration directives in a
file, and you don’t get the desired effect, there are a number of
things that may be going wrong.

Most commonly, the problem is that is not
set such that your configuration directives are being honored. Make
sure that you don’t have a in effect
for the file scope in question. A good test for this is to put garbage
in your file and reload the page. If a server error is
not generated, then you almost certainly have in effect.

If, on the other hand, you are getting server errors when trying to
access documents, check your httpd error log. It will likely tell you
that the directive used in your file is not
permitted.

This will indicate either that you’ve used a directive that is
never permitted in files, or that you simply
don’t have set to
a level sufficient for the directive you’ve used. Consult the
documentation for that particular directive to determine which is
the case.

Alternately, it may tell you that you had a syntax error in your
usage of the directive itself.

Стандартный .htaccess для WordPress

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

  1. Подключитесь к хостингу по FTP, используя FileZilla или другой FTP-клиент, и перейдите в корневую директорию сайта.
  2. Кликните правой кнопкой мыши по правому окошку с файлами сайта и выберите «Создать новый файл».
  3. Введите .htaccess и нажмите OK.

Обратите внимание! Убедитесь, что ввели имя .htaccess (с точкой), а не htaccess (без точки). Другой способ создания файла .htaccess — через Консоль WordPress

Выберите в главном меню Настройки > Постоянные ссылки и, ничего не меняя на странице, нажмите кнопку «Сохранить изменения»

Другой способ создания файла .htaccess — через Консоль WordPress. Выберите в главном меню Настройки > Постоянные ссылки и, ничего не меняя на странице, нажмите кнопку «Сохранить изменения».

Стандартный .htaccess для WordPress выглядит следующим образом:

# BEGIN WordPress

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php 

# END WordPress

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

Что такое .htaccess?

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

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

Все управление конфигурациями сервера происходит с помощью директив. Директивы – это небольшие команды, имеющие вид «ключ-> значение».

Основные директивы для управления сервером прописаны в главном файле конфигурации – httpd.conf. Но доступ к нему для обычных пользователей закрыт, а .htaccess дает возможность изменять некоторые директивы из httpd.conf. Действие директив .htaccess распространяется на весь каталог, в котором он находится. Поэтому если разместить его в корневом каталоге, он будет распространяться на весь сайт.

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

  • Директивы простого перенаправления (редирект);
  • Директивы сложного перенаправления (mod_rewrite);
  • Индексные страницы;
  • Обработка ошибок;
  • Определение кодировки;
  • Управление доступом к директориям и файлам;
  • Паролирование директорий.

Разберем каждый описанный параметр поподробнее.

Перенаправления и изменение URL

Популярное использование файла — задание перенаправлений или изменений URL. Данный метод помогает в целях SEO изменять имя домена, или перестраивать файловую структуру проекта, или делать длинные трудно запоминаемые адреса URL простыми и понятными.

Перенаправления

Перенаправления могут быть очень простыми, например:

Redirect 301 ^old\.html$ http://localhost/new.html

В данном случае используется код статуса HTTP 301 (перемещено постоянно) и все запросы к перенаправляются на . Здесь используется регулярное выражение для определения соответствия URL правилу, что добавляет сложности в построение правила, но придает уверенности в правильности URL. Требуется указывать полный адрес URL ресурса, на который происходит перенаправление.

Изменения

Правило изменения также может быть очень простым:

RewriteEngine on
RewriteRule ^old\.html$ new.html

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

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

RewriteRule ^old\.html$ http://hostname/new.html 

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

Одно возможное использование перенаправлений — изменение адресов URL к более простой форме для посетителей и поисковых роботов. Рассмотрим пример:

RewriteRule ^products/(+)/(+)/(+) product.php?cat=$1&brand=$2&prod=$3

Данное правило позволяет использовать посетителю адрес URL наподобие products/turntables/technics/sl1210, который будет трансформироваться в product.php?cat=turntables&<WBR>brand=technics&prod=sl1210. Круглые скобки между слешами в регулярном выражении примера выполняют объединение в группы – мы можем использовать каждую из них как  , и соответственно. Комбинация в скобках соответствует любому символу, кроме слеша, в любых количествах.

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

Using .htaccess

It is important to remember that an .htaccess file will affect the directory it is placed in and all resulting sub-directories. Therefore, if you add your ‘.htaccess’ file to the ‘web site root’ then it will affect all subsequent folders like so:

http://www.yourdomain.com/
| -- directory1
| -- directory2
| -- directory3
|    | -- directory3/childdirectory1
|    | -- directory3/childdirectory2
| -- .htaccess
| -- index.html

However, if you place the ‘.htaccess’ file in http://www.yourdomain.com/directory1 then the features of the ‘.htaccess’ will be restricted to that folder and all child folders only. For example:

http://www.yourdomain.com/
| -- directory1
|    | -- directory1/childdirectory1
|    | -- directory1/childdirectory2
|    | -- directory1/childdirectory3
|    |    | -- directory1/childdirectory3/newdirectory1
|    |    | -- directory1/childdirectory3/newdirectory2
|    | -- .htaccess
|    | -- index.html

After editing your .htaccess file on multiple occassions it may look a little complicated so I would recommend implementing comments. To do this, simply place the hash symbol at the beginning of every line like so:

# comment here
# another comment here

Безопасность

xxx.xxx.xxx.xxx — это ваш IP. Если вы замените последние три цифры, например, на 0/12, этим вы определите диапазон IP внутри этой сети и это оградит вас от проблемы перечислять по отдельности все разрешённые IP.

И, естественно, противоположная функция к этой:

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

Скрытые файлы и директории (те, чьи имена начинаются с точки .) должны в большинстве, если не все, быть недоступны для других. Например: .htaccess, .htpasswd, .git, .hg…

Как вариант, вы можете показывать ошибку Not Found (не найдено), чтобы не давать атакующему подсказку:

Запретить доступ к файлам

Эти файлы могут быть оставлены некоторыми редакторами text/html (вроде Vi/Vim) и представляют огромную дыру в безопасности, если станут общедоступными.

Защитить паролем директорию

Сначала нужно создать файл .htpasswd в определенной директории:

И потом использовать этот файл для аутентификации:

Запретить рендеринг сайта во фрейме

Эта команда запрещает отображение сайта во фрейме (например, в теге iframe), но разрешает отображение сайта во фрейме для определенных URI.

Для чего нужен файл .htaccess?

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

  1. Данный метод часто используется если вы хотите чтобы при вводе в адресную строку адрес сайта с www, пользователей автоматически перенаправляло на адрес с http://
    Ссылка на руководство — http://prog-time.ru/kak-sdelat-301/

  2. Вы можете изменить файл, который открывается по умолчанию в каталоге, обычно это файл с именем index (index.html, index.php и т.д.)
    Ссылка на руководство — http://prog-time.ru/kak-zadat-glavnyj-fajl-dlya-sajta-directoryindex-v-htaccess/

  3. Вы можете перенаправить пользователей на собственную страницу ошибок при их возникновении
    Ссылка на руководство — http://prog-time.ru/izmenenie-stranitsy-dlya-oshibok/

  4. Вы можете сменить часовой пояс на вашем сайте
    Ссылка на руководство — http://prog-time.ru/kak-izmenit-chasovoj-poyas-na-servere-kak-izmenit-vremya-na-sajte/

  5. Вы можете запрещать и разрешать доступ к файлам.
    Ссылка на руководство — http://prog-time.ru/upravlenie-dostupom-s-pomoshhyu-htaccess/

  6. Вы можете разрешать доступ к запрещенным файла только с конкретного ip адреса или наоборот заблокировать доступ к файлам.
    Ссылка на руководство — http://prog-time.ru/upravlenie-dostupom-s-pomoshhyu-htaccess/

  7. Например, вы можете перенаравить пользователей использующих планшет на один файл, а пользователей использующих компьютер на другой.
    Ссылка на руководство — к сожалению, мы не успели написать эту статью. Мы обязательно решим эту проблему. Вы можете написать нам в группу Вконтакте и мы вам обязательно поможем https://vk.com/progtime

  8. С помощью этого, вы сможете запретить копирование материалов вашего сайта.
    Ссылка на руководство — к сожалению, мы не успели написать эту статью. Мы обязательно решим эту проблему. Вы можете написать нам в группу Вконтакте и мы вам обязательно поможем https://vk.com/progtime

  9. Ссылка на руководство — http://prog-time.ru/izmenyaem-kodirovku-na-sajte/

  10. Вы можете заблокировать пользователей, которые переходят с определенного домена на ваш сайт.
    Ссылка на руководство — к сожалению, мы не успели написать эту статью. Мы обязательно решим эту проблему. Вы можете написать нам в группу Вконтакте и мы вам обязательно поможем https://vk.com/progtime

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

Типы файлов HTACCESS

Ассоциация основного файла HTACCESS

.HTACCESS

Формат файла: .htaccess
Тип файла: Apache HTACCESS File

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

Создатель: Apache Software Foundation
Категория файла: Веб-файлф
Ключ реестра: HKEY_CLASSES_ROOT\.htaccess

Программные обеспечения, открывающие Apache HTACCESS File:

Microsoft Notepad, разработчик — Microsoft Corporation

Совместимый с:

Windows
Mac
Linux

MacroMates TextMate, разработчик — MacroMates

Совместимый с:

Mac

Adobe Dreamweaver, разработчик — Adobe Systems Incorporated

Совместимый с:

Windows
Mac

Zend Studio, разработчик — Rogue Wave

Совместимый с:

Windows
Mac
Linux

Apache HTTP Server, разработчик — Apache Software Foundation

Совместимый с:

Windows
Mac
Linux

Ограничения доступа к определённым ресурсам

С помощью файла мы можем ограничить доступ к любому файлу или каталогу. Например, код:

AuthName "Введите имя пользователя и пароль"
AuthUserFile /path/to/.htpasswd
Require valid-user
AuthType Basic

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

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

<Files "protectedfile.html">
   AuthName "Введите имя пользователя и пароль"
   AuthUserFile /path/to/.htpasswd
   Require valid-user
   AuthType Basic
</Files>

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

Настройки веб-серверов в Панели управления

В настройках базового веб-сервера вы можете изменять все директивы PHP, значение графы Changeable для которых соответствует PHP_INI_PERDIR или PHP_INI_ALL. Эти настройки будут иметь силу на всех сайтах, которые работают на этом веб-сервере.

Управлять абсолютно всеми параметрами PHP вы можете на расширенном веб-сервере, редактируя php.ini через его настройки.

Чтобы установить индивидуальные параметры PHP для отдельного сайта, используйте файл .htaccess. Через него можно управлять всеми параметрами, доступными для изменения на базовом веб-сервере – примеры самых востребованных перечислены ниже.

По умолчанию отображение ошибок PHP на хостинге отключено. Для того чтобы видеть текст ошибок PHP на странице сайта, добавьте в файл .htaccess директиву:

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

Директория в пути расположения файла должна существовать, а если ее нет — обязательно создайте папку вручную. Файл журнала будет создан при появлении первой ошибки.

Для изменения ограничения на оперативную память для выполнения процесса используйте следующую директиву в .htaccess:

Вместо 512M укажите желаемый размер ограничения

Обратите внимание, что символ «M» (латинская M) указывается слитно со значением. Уточнить максимальное значение оперативной памяти, доступное по тарифу, можно в

Чтобы увеличить время выполнения скриптов (в секундах), добавьте следующую директиву в .htaccess:

Вместо 300 укажите желаемый размер ограничения

Обратите внимание, что выполнение скрипта более чем в 10 минут (600 секунд) завершится ошибкой с кодом 504

Если вам нужно загружать файлы бóльшего размера, либо же ограничить их объем (чтобы контролировать дисковую квоту), то управлять объемом загружаемого файла можно через .htaccess:

Вместо 200M укажите желаемый размер ограничения

Обратите внимание, что символ «M» (заглавная латинская M) указывается слитно со значением

Максимальный размер передаваемых переменных определяется с помощью следующей директивы:

Вместо 15000 укажите необходимый размер ограничения, который требует CMS сайта.

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

Вместо «windows-1251» подставьте подходящую кодировку, например, UTF-8. Проверить, в какой именно кодировке написан сайт, можно через инструменты используемого браузера. Если сайт не обрел корректный вид, обратитесь за помощью в службу технической поддержки.

Чтобы заставить интерпретатор PHP обрабатывать файлы с произвольным расширением, (например, .phtml), добавьте в файл .htaccess следующую строку:

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

По умолчанию время хранения сессий — 1440 секунд (24 минуты). Для изменения этого значения добавьте в .htaccess следующие директивы:

Обратите внимание: при большом количестве посетителей и длительном времени сохранения сессий в папке, указанной в session.save_path, образуется большое количество файлов. Это может вызывать замедление сайта в момент очистки старых сессий и увеличивать количество потребляемых ресурсов

Альтернативные механизмы хранения и очистки сессий:

  1. Указывать вложенность директорий хранения сессий с помощью аргумента N в session.save_path и очищать старые сессии собственными скриптами ( в документации PHP).
  2. Реализовать собственный механизм хранения сессий (например, в MySQL) и установить его с помощью функции session_set_save_handler.

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

Это переменные вида %{NAME_OF_VARIABLE}

где NAME_OF_VARIABLE может быть строкой взятой из следующего списка:

HTTP заголовки: соединение & запрос:  
HTTP_USER_AGENTHTTP_REFERERHTTP_COOKIEHTTP_FORWARDEDHTTP_HOSTHTTP_PROXY_CONNECTIONHTTP_ACCEPT REMOTE_ADDR REMOTE_HOST REMOTE_USER REMOTE_IDENT REQUEST_METHOD SCRIPT_FILENAME PATH_INFO QUERY_STRING AUTH_TYPE  
внутренние сервера: системные: специальные:
DOCUMENT_ROOT SERVER_ADMIN SERVER_NAME SERVER_ADDR SERVER_PORT SERVER_PROTOCOL SERVER_SOFTWARE TIME_YEAR TIME_MON TIME_DAY TIME_HOUR TIME_MIN TIME_SEC TIME_WDAY TIME API_VERSION THE_REQUEST REQUEST_URI REQUEST_FILENAME IS_SUBREQ

Эти переменные полностью соответствуют названным похожим образом MIME-заголовкам HTTP, и переменным сервера Apache или полям систем Unix. Те, что являются для mod_rewrite специальными включают:

IS_SUBREQ — Будет содержать текст «true» если запрос выполняется в текущий момент как подзапрос, «false» в другом случае. Подзапросы могут быть сгенерированны модулями которым нужно иметь дело с дополнительными файлами или URI для того чтобы выполнить собственные задачи.

API_VERSION — Это версия API модуля Apache (внутренний интерфейс между сервером и модулем) в текущей сборке сервера, что определено в include/ap_mmn.h. API версия модуля соответствует используемой версии Apache (для версии Apache 1.3.14, к примеру это 19990320:10), однако это в основном интересно авторам модулей.

THE_REQUEST — Полная строка HTTP запроса отправленная браузером серверу (т.е., «»). Она не включает какие-либо дополнительные заголовки отправляемые браузером.

REQUEST_URI — Ресурс, запрошенный в строке HTTP запроса.

REQUEST_FILENAME — Полный путь в файловой системе сервера к файлу или скрипту соответствующим этому запросу.

Примечания:

  1. Переменные SCRIPT_FILENAME и REQUEST_FILENAME содержат одинаковые значения, т.е., значение поля внутренней структуры сервера Apache. Первое имя это просто широко известное имя переменной CGI в то время как второе это постоянная копия REQUEST_URI (содержащая значение поля структуры ).
  2. Есть специальный формат: где переменная может быть любой переменной окружения. Это ищется во внутренних структурах Apache и (если там нет) с помощью вызова из процесса Apache сервера.
  3. Есть специальный формат: где заголовок может быть любым именем HTTP MIME-заголовка. Это ищется в HTTP запросе. Пример: значение HTTP заголовка «».
  4. Есть специальный формат опережающих запросов которые производятся внутренним (основанном на URL) подзапросом для определения конечного значения переменной. Используйте это когда вы хотите использовать переменную для преобразований, которая реально определяется позднее, в какой-либо фазе API, и таким образом недоступна на данном этапе. Для примера когда вы хотите преобразовать соответственно переменной из контекста сервера (файл ) вы должны использовать потому что эта переменная устанавливается в фазах авторизации которые идут после фазы трансляции URL в которой и работает mod_rewrite. С другой стороны, по причине реализации работы mod_rewrite в контексте каталога (файл .htaccess) через Fixup фазу API и из-за того, фазы авторизации идут до этой фазы, вы просто можете там использовать .
  5. Есть специальный формат: который создает внутренний (основанный на имени файла) подзапрос для определения конечного значения переменной. В основном это то же самое что и формат LA-U приведенный выше.

Заключение

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

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

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

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

Указываем для IE режим вывода

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

Header set X-UA-Compatible "IE=Edge"

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

<FilesMatch "\.(js|css|gif|png|jpe?g|pdf|xml|oga|ogg|m4a|ogv|mp4|m4v|webm|svg|svgz|eot|ttf|otf|woff|ico|webp|appcache|manifest|htc|crx|xpi|safariextz|vcf)$" >
      Header unset X-UA-Compatible
</FilesMatch>
Добавить комментарий

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

Adblock
detector