Примеры htaccess: Файл .htaccess — настройка перенаправлений и управление конфигурацией веб-сервера

Содержание

.htaccess примеры

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

Для чего служит .htaccess?

Набирая адрес в строке браузера, вы получаете на свой компьютер файлы, которые отображает браузер. Управление тем, какие файлы и как вам показывать (пересылать) осуществляет веб-сервер. Наиболее популярных серверов два: IIS и Apache.
Как и любая программа, веб-сервер имеет определенные настройки. Но, у вас, как пользователя Апача может (и скорее всего не будет, если говорить о виртуальном хостинге) прав менять конфигурацию Апача через его главные файлы, действие которых распространяется на всех пользователей этого сервера. Но, вы можете менять некоторые конфигурационные файлы, который распространяют свое действие только на ваш сайт. Один из таких файлов — .htaccess
Это файл гибкой настройки веб-сервера Апач.

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

|-user
| |
|  -user1
|        |
|         -user2
|
|-data
| |
|  -data1
|      |
|       -data2
|

Директории user1 и user2 будут вложенными по отношению к директории user. Если мы поместим в директорию www файл .

htaccess, то его действие будет автоматически распространяться и на директории user1 и user2.
В директорию data помещаем другой файл .htaccess, по-сравнению, с тем, что находится в директории user. И для директорий data1 и data2 будет действовать файл .htacсess, находящийся в data.
Теперь, в директорию user2 мы помещаем еще один файл .htaccess, который отличен от того, что находится в директории 2мя уровнями выше (это директория user). В итоге, настройки для директории user2 будут определяться только тем файлом .htaccess, который находится в этой директории.
Так как чаще всего Апач настроен так, что всегда ищет этот файл в директории, то .htaccess поможет вам быстро и без останова сервера произвести его перенастройку.


Синтаксис .htaccess

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

— пути к файлам (директориям) указываются от корня сервера. Пример: /opt/home/www.astanafoto. com/htdocs/config/.htpasswords
— домены с указанием протокола
Пример: Redirect / http://www.site.ru

Файл имеет название именно «точка» htaccess
Должен быть записан в UNIX-формате. Для оболочки FAR, достигается F4 (редактирование файла), Shift+F2 (выбрать «сохранить как UNIX-текст»).


Как запретить веб-посетителям читать файлы в директории?

Запрет на все файлы:deny from all
Где all обозначает «все».


Разрешить доступ с определенного ip:order allow deny
deny from all
allow from <ваш ip>

В данном случае, <ваш ip> обозначает конкретный адрес.
Например:order allow deny
deny from all
allow from 192.126.12.199


Запретить доступ с определенного ip:order allow deny
deny from all
deny from <ваш ip>
Использование <ваш ip> аналогично для примера выше.

В зависимости от того в каком порядке указаны директивы меняется логика работы сервера. В случае если Deny,Allow то запрещается доступ со всех IP кроме оговоренных, в случае если Allow,Deny разрешается доступ со всех IP кроме оговоренных. Далее должны идти секции описания для доступа и запрета. Ключевое слово all означает со всех IP

Например мы хотим запретить (блокировать) доступ с IP 81.222.144.12 и 81.222.144.20 и разрешить всем остальным нам необходимо добавить в

.htaccess следующий код:

Order Allow,Deny
Allow from all
Deny from 81.222.144.12, 81.222.144.20

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

Order Deny,Allow
Deny from all
Allow from 81.222.144.12, 81.222.144.20

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

  • для доменного имени (или его части):
    Allow from apache. org
    Allow from .net example.edu
  • для ip адреса:
    Allow from 10.1.2.3
    Allow from 192.168.1.104 192.168.1.205
  • для части ip адреса:
    Allow from 10.1
    Allow from 10 172.20 192.168.2
  • для пары сеть/маска:
    Allow from 10.1.0.0/255.255.0.0
  • для сети/nnn CIDR спецификации:
    Allow from 10.1.0.0/16 

Запрет на группу файлов по маске:<Files "\.(inc|sql|...другие расширения...)$">
order allow,deny
deny from all
</Files>
Определяет доступ к файлу по его расширению.
Например запрет на доступ к файлам с расширениям «inc» для веб-посетителей:
<Files «\.(inc)$»>
order allow,deny
deny from all
</Files>

В данном примере сам веб-сервер Апач может обращаться к файлам с таким расширениям.


Запрет на конкретный файл:
Можно поставить запрет на конкретный файл по его названию и расширению.

<Files config.inc.php>
order allow,deny
deny from all
</Files>
В данном примере стоит запрет на обращения к файлу config.inc.php.


Пароль на директорию:AuthName "Private zone"
AuthType Basic
AuthUserFile /pub/home/твой_логин/.htpasswd
require valid-user
</Files>
Значение AuthName будет выводиться для посетителя и может использоваться для пояснения запроса авторизации. Значение AuthUserFile указывает на место, где хранится файл с паролями для доступа к данной директории. Этот файл создается специальной утилитой htpasswd.exe.

Например в директории, которую защищаем паролем создаем такой .htaccess:AuthName "For Registered Users Only"
AuthType Basic
AuthUserFile /pub/site.ru/.htpasswd
require valid-user
</Files>
В этом примере, посетитель при запросе директории, будет читать фразу «For Registered Users Only», файл с паролями для доступа должен лежать в директории /pub/site.

ru/ и называться .htapasswd . Директория указывается от корня сервера, если вы неправильно зададите директорию, то Апач не сможет прочитать файл .htpasswd и никто не получит доступа к данной директории.


Пароль только на 1 файл:сайт источник http://yapro.ru Tue Feb 09 2010 15:44:59 GMT+0300
Аналогично паролированию директории полностью, можно ставить пароль только на 1 файл.
Пример установки пароля на файл private.zip:<Files private.zip>
AuthName "Users zone"
AuthType Basic
AuthUserFile /pub/home/твой_логин/.htpasswd
</Files>


Пароль на группу файлов:
Аналогично, используя <Files «\.(inc|sql|…другие расширения…)$»>, можно ставить пароли по маске файлов.
Пример установки пароля на доступ ко всем файла с расширением «sql»:

<Files «\.(sql)$»>
AuthName «Users zone»
AuthType Basic
AuthUserFile /pub/home/твой_логин/.htpasswd
</Files>


Проверка прав доступа

Задача: есть каталог a1 и в нем два вложенных каталога a2, a3, введено 2 уровня пользователей. 1 группа имеет доступ только к a1 и a2, 2-я ко всем трем каталогам. Необходимо проводить аутентификацию только 1 раз — при доступе к a1, но при этом соблюдать права на доступ к а2 и а3.
Ник и пароль запрашиваются только при входе на а1 — если у юзвера есть доступ на а2 пароль уже не запрашивается. Если на а3 доступа нет, вылетит табличка «введите пароль».
www.site.ru/a1
www.site.ru/a1/а2
www.site.ru/a1/a3
a1 — общий и вместе с тем закрытый. а2 и а3 только для отдельных личностей.


файл .htaccess для каталога а1:

AuthName "Input password"
AuthType Basic
AuthUserFile "/pub/home/login/htdocs/clousearea/.htpasswd"
<Files *.*>
require valid-user
</Files>
файл .htaccess для каталога а2: AuthName "Input password"
AuthType Basic
AuthUserFile "/pub/home/login/htdocs/clousearea/.htpasswd"
<Files *.*>
require user юзвер1 юзвер2 юзвер3
</Files *.*>
файл .htaccess для каталога а3: AuthName "Input password"
AuthType Basic
AuthUserFile "/pub/home/абв/htdocs/clousearea/. /$ /about_my_sity.html


Перенаправление посетителя при запросе определенных страниц:
Это уже для всех сетевых вирусов и сканеров. Теперь любой запрос с адресом /_vti_bin будет автоматически перенаправляться на Microsoft: redirect /_vti_bin http://www.microsoft.com

redirect /scripts http://www.microsoft.com
redirect /MSADC http://www.microsoft.com
redirect /c http://www.microsoft.com
redirect /d http://www.microsoft.com
redirect /_mem_bin http://www.microsoft.com
redirect /msadc http://www.microsoft.com
RedirectMatch (.*)\cmd.exe$ http://www.microsoft.com$1


Как сделать стартовой другую страницу?

Что бы поменять страницу, которая будет показываться при обращении к директории, пишем:DirectoryIndex <нужная страница>Можно указывать несколько страниц.DirectoryIndex index.shtml index.php index.php3 index.html index. htm


Как заставить Апач обрабатывать SSI директивы?

SSI позволяют «собирать» страницу из кусочков. В одном кусочке у вас код меню, в другом код верхней части страницы, в третьем — нижней. А посетитель видет обычную страницу, которая состоит из того кода, который входит в ваши кусочки.
Необходимы обязательные установки в httpd.conf:
В блоке, начинающемся с <Directory/> и заканчивающийся </Directory> в строку Options Indexes добавьте Includes.

После, в файле .htaccess пишем:
AddHandler server-parsed .shtml .shtm .html .htm


Как заставить Апач выполнять в html документах php код?

Иногда бывает полезно «обмануть» посетителя, выдавая ему свои php-скрипты или иные файлы, как html файлы. Реально используется для индексации поисковой системой Rambler php-скриптов. Некоторые делаю мелкие фишки, вроде того, что дают фалам расширения совпадающие с какими-либо «знаковыми» именами. Например, на сайте www.osg.ru используются файлы с расширением osg: index.osg, script.osg и т.п.
RemoveHandler .html .htm
AddType application/x-httpd-php .php .htm .html .phtml
При большой посещаемости сервера может вызвать тормоза. Спрашивайте у админа.


Как самому обрабатывать ошибки Апача?

Наиболее интересные и полезные ошибки Апача это: 403-404, 500.
403 — пользователь не прошел аутентификацию, запрет на доступ (Forbided).
404 — запрашиваемый документ (файл, директория) не найден.
500 — внутренняя ошибка сервера (к примеру, ошибка в синтаксисе файла .htaccess).
Для того, что бы пользователю при этих ошибках были показаны ваши собственные сообщения об ошибках, в .htaccess пишем:
ErrorDocument 403 /errors/403.html
ErrorDocument 404 /errors/404.html
ErrorDocument 500 /errors/500.html
При этом при возникновении 404 ошибки пользователю загрузится файл errors/403.html.


Удобно делать собственный обработчик на некоторые ошибки. В .htaccess пишем:ErrorDocument 403 /errors/error.php?403
ErrorDocument 404 /errors/error.php?404
ErrorDocument 500 /errors/error.php?500
В error.php через $HTTP_SERVER_VARS[‘REQUEST_URI’] определяем какой документ вызвал ошибку и дальше обрабатываем. Если в .htaccess на ErrorDocument стоит указание файла с полным путем (http://site.ru/error.php), то $HTTP_SERVER_VARS[‘REQUEST_URI’] будет содержать этот файл, а не вызвавший ошибку.
В Internet Explorer 5.0 неправильно обрабатывается файл, вызывающийся при ошибке, если его размер меньше 1 килобайта. Будет вызвана стандартная страница IE 404.

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

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

Options -Indexes


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

На заре интернета и зарождения браузеров, часто была ситуация, что браузер не мог автоматически определить, в какой из русских кодировок написан документ и в браузер выдавалась какая-то каша. Для избежания этого указываем, что все отдаваемые страницы будут иметь кодировку windows-1251:
AddDefaultCharset windows-1251


Можно ли указать кодировку на загружаемые файлы?

При загрузке посетителем файла на сервер, возможна перекодировка его — указываем, что все получаемые файлы будут иметь кодировку windows-1251:
CharsetSourceEnc windows-1251


Создал файл .htaccess, но сервер выдает 500 ошибку — Internal Erorr

Ошибка синтаксиса или файл записан не в том формате.
Смотрите вопрос #2.

Полный список htaccess перенаправлений — Блог разработчикам

В  этой статье, я наконец собрал полный список готовых перенаправлений на htaccess. Вы можете использовать их на своих веб-ресурсах просто через copy&paste — быстро и легко…

Ниже вы найдете перенаправления через mod_alias и mod_rewrite . Примеры включают перенаправление в и из любого каталога, подкаталога, ресурса, URL-адреса и многое другое. Большинство из этих примеров взяты из моей практики и моих готовых проектов. Наслаждайтесь! 🙂 

Перенаправление через mod_alias

Эти примеры показывают, как перенаправить из одного места в другое с помощью модуля псевдонимов Apache . Кроме того, вы можете изменить код состояния на любой другой (например, изменить с 301 на 302).

Перенаправить страницу в том же домене

Redirect 301 /page.php /page.html

Redirect 301 /page. php /page.html

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

Redirect 301 /page.php https://example.com/page.html

Redirect 301 /page.php https://example.com/page.html

Перенаправить весь сайт

Redirect 301 / https://example.com/

Redirect 301 / https://example.com/

Перенаправить весь сайт в подкаталог

Redirect 301 / https://example.com/subdirectory/

Redirect 301 / https://example.com/subdirectory/

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

Redirect 301 /subdirectory https://example.com/

Redirect 301 /subdirectory https://example. com/

Перенаправление с .html на .php

RedirectMatch 301 (.*)\.html https://example.com/$1.php

RedirectMatch 301 (.*)\.html https://example.com/$1.php

Запретить доступ к странице

Redirect 403 /page.html

Redirect 403 /page.html

Сообщите посетителям, что страница исчезла

Redirect 410 /page.html

Redirect 410 /page.html

Перенаправление в htaccess через mod_rewrite

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

Перенаправление со старой страницы на новую

RewriteRule ^/old-page/?$ /new-page/ [R=301,L]

RewriteRule ^/old-page/?$ /new-page/ [R=301,L]

Перенаправить все пути из старого домена в те же пути в новом домене

RewriteRule (. example\.com$ [NC]

RewriteRule (.*) https://www.example.com/$1 [R=301,L]

Код состояния

Вы можете изменить код состояния (т.е. ответ сервера) для любого из предыдущих перенаправлений (либо через mod_alias, либо через mod_rewrite). Просто измените текущий 301 статус на любой из следующих:  302, 403, 410 ит.д

примеры, синтаксис модуля Apache Mod Rewrite

Навигация по статье

  1. Особенности модуля
  2. Важные моменты
  3. Построение синтаксиса директивы RewriteRule
  4. Существующие переменные параметра флаг
  5. Чем отличается mod_rewrite в .htaccess и в VirtualHost?
  6. Пример составления регулярных выражений
  7. Пример работы с внешним редиректом
  8. Раскрытие ссылок

Очень часто владельцам сайтов требуется перенаправлять посетителей с разных адресов на определенную страницу. Это может быть связано с различными причинами, но чаще всего просто остается неиспользованный домен, который нужно пристроить. Так, например, ведется реклама какого-либо товара и вам нужно по клику на определенную ссылку перенаправить его на новый адрес или вовсе передать контент с главного сайта. Можно попросить администратора хостинга, чтобы тот сделал базу данных общей для обоих сайтов, но как быть с выделенным сервером? Здесь придется действовать самостоятельно, используя mod_rewrite сервера Apache. Он входит в состав правил RewriteRule, обеспечивающих вебмастеров большими возможностями.

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

Особенности модуля

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

С помощью правил RewriteRule пользователь получает возможность выполнять разные действия с URI:

  • Изучить синтаксис его написания, разобрав на части.
  • Сравнить отдельные части с данными из внешних источников или из базы сервера Apache, в зависимости от ситуации.
  • Выполнить преобразование URI в соответствии с заранее заданными параметрами.
  • При необходимости можно сгенерировать часть строки URI.

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

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

Если перенаправление URI было только внутренним, то посетитель сайта не заметит, что был перенаправлен на другую страницу. Более того, не изменится и ссылка в адресной строке. Она будет выглядеть статической. Сервер апачи работает очень быстро при обязательном соблюдении всех правил его использования RewriteRule. Фактически клиент указывал один адрес, а получил ответ от другого. Данный метод актуален для тех сайтов, в которых перенаправления реализованы в рамках одной базы данных со ссылкой в PHP на главную страницу index.php.

Существует еще один способ выполнения перенаправления посетителя. Это можно выполнить при помощи изменения ссылки непосредственно в браузере пользователя. В таком случае осуществляется отправка кода заголовка и называется эта функция redirect. Существует единая система кодов, каждый из которых определяет конкретные функции модуля. Например, код 301 Moved Permanently является ничем иным, как постоянной перенаправления.

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

Важные моменты

Любые правила строятся на определенных постулатах. Так происходит и с модулем mod_rewrite, так как многие вебмастера считают его запутанным. На самом деле все достаточно просто, если часто применять знания на практике. Чтобы легче и быстрее освоить все функции программы, необходимо запомнить несколько важных моментов:

  1. Модуль умеет работать только с полными ссылками (обязательно должен быть включен path-info). Полный адрес должен присутствовать везде. По сути. все выглядит так: если файл .htaccess расположен в корне и применяются директивы именно из него, то ссылка должна содержать путь к корневой папке на сервере.
  2. Директива RewriteRule указывает на то, что правило преобразования адресов также является и условием, которое необходимо соблюдать в обязательном порядке. Синтаксис указанной директивы прямо указывает на то, каким условиям должен соответствовать URI. Важно понимать, что под правилами имеется в виду выражение, которое будет выполняться при обработке адреса. Вернее было бы назвать его алгоритмом, по которому будет осуществляться преобразование. Стоит понимать, что даже при запуске алгоритма или правила, не всегда будет достигнут нужный результат. Это связано с тем, что промежуточные данные далеко не всегда соответствуют условиям. А чтобы алгоритм был запущен, необходимо полное соответствие ссылки.
  3. Директивой RewriteRule также предусмотрены дополнительные условия. Они вызываются другой директивой — RewriteCond. Количество условий не ограниченно, поэтому их может быть несколько. На этом моменте обычно у всех наступает ступор, потому что происходит разрыв шаблона. Они задействуются в ходе выполнения правила или алгоритма, когда будет запущен основной алгоритм. Конечное преобразование будет выполнено по отношению к URI, если будут выполнены и дополнительные условия. Также важно знать еще один нюанс: прописывать условия к директиве RewriteCond следует перед основными правилами. Многим новичкам такая запись покажется нелогичной, и это немудрено, но она была создана именно в таком порядке.
  4. Текущее представление URI. Речь идет о ссылке, которая уже была преобразована определенными правилами, то есть, до изменения или уже после. Преобразование ссылки осуществляется последовательно от правила к правилу при соблюдении их условий, поэтому адрес будет последовательно изменяться.
  5. Расположение правил RewriteRule должно быть верным и имеет большое значение. Здесь следует понимать, что правила (алгоритмы) располагаются именно в последовательности осуществляемых преобразований ссылки. В противном случае преобразование будет выполнено неверно в любом случае и конечный URI не будет соответствовать заданному. Преобразование происходит в зависимости от последовательности правил, строчка за строчкой. Если адрес не отвечает текущим условиям правила, то оно не выполняется, а происходит переход к следующему и так далее. Соответственно, можно задать несколько конечных ссылок для отправки посетителя на разные сайты при выполнении определенных условий, указанных в цепочке.
  6. Логика отработки алгоритмов в директиве RewriteRule четко выстроена. Сначала осуществляется поиск условий, которые будут выполняться после отработки основного правила. Если дополнительных условий нет, то запускается последовательная обработка основных правил. Если они есть, после отработки основных правил apache направляет на дополнительные при выполнении их условий. При этом они выполняются именно в том порядке, в котором были перечислены в директиве RewriteCond. Здесь имеется важный момент. Преобразование URI будет выполнено только в том случае, если он будет соответствовать всем дополнительным условиям, потому что они объединены оператором AND по умолчанию. Если необходимо, то программист может изменить алгоритм, допустим, сделав так, чтобы выполнялось одно из условий. Для этого достаточно изменить оператор на OR.
  7. Mod Apache позволяет изменять алгоритм действия над URI после выполнения правила, указанного в директиве RewriteRule. Пользователь получает возможность при помощи расстановки соответствующих флагов отказать в выдаче нужных данных или перенаправить на другой адрес.
  8. Mod_rewrite является неотъемлемой частью Apache, поэтому его можно использовать при любых конфигурациях системы. У пользователя есть возможность записать конфигурацию на глобальном уровне или через директиву в главном конфигураторе. Также допускаются записи в подключаемых конфигурациях на виртуальном хосте путем добавления директив. Кроме этого, возможна и запись конфигурации в каталоге через директивы.

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

Построение синтаксиса директивы RewriteRule

Как и любой другой язык программирования, директива RewriteRule требует соблюдения определенного синтаксиса. В общем виде выражение выглядит следующим образом:

В файле данная строка будет выглядеть так:

На рисунке использованы следующие поля:

  1. RewriteRule — на этом месте находится название используемой директивы.
  2. Шаблон — здесь прописывается условие, которое должно соответствовать URI. Если оно выполняется, то запускается правило. В данном случае используются GET-параметры, которые применяются к URI без query string.
  3. Подстановка — здесь прописывается правило изменения адреса.
  4. Флаг — это управляющий параметр, который имеется в используемой директиве.

В параметре Подстановка для RewriteRule или Сравнимая Строка для RewriteCond нужно указывать номер подвыражения, который проставляется в формате %N или $N.

Чтобы оперировать методами преобразования ссылок, нужно ознакомиться с возможными вариантами. Так, в примере в операторе Шаблон указана последовательность символов, которая нам говорит о следующем. Если после анализа выяснится, что захваченная скобками часть отвечает условию, то она будет сохранена в переменную $1.

В следующем операторе формируется строка из постоянного значения (до знака «/») и из переменного $1.

Указанный флаг в примере задает команду остановки любых преобразований. Если требуется добавить его в конец нового адреса, то параметр должен содержать строку «’qsappend|QSA’». Если начальный адрес содержит query string с GET-параметрами, то эта часть просто отбрасывается apache и не учитывается в дальнейшем при составлении нового адреса.

При составлении правил и условий в директиве RewriteCond также используются определенные переменные, задающие формат строки. Она может быть с GET-параметрами или с доменным именем. Их формат содержится в описании правил директивы. Параметр условия обычно содержит PB. Во флаге указывается принцип работы логики. Условия можно объединять операторами AND и OR, в зависимости от условий преобразования адресной строки.

Существующие переменные параметра флаг

Как правило, поле всегда предваряется строкой http:// thishost[:thisport]. Особенность преобразования состоит в том, что mod_rewite ее отсекает. Данная опция весьма полезна при формировании новых URI. Но при выполнении внешнего редиректа может стать настоящей проблемой. Для ее решения необходимо проставлять флаг [R]. Помимо данного параметра, также можно использовать ряд дополнительных.

redirect|R[=code]

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

  • temp;
  • permanent;
  • seeother.

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

forbidden|F

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

gone|G

Если текущая ссылка не существует, то с помощью этого аргумента ее можно объявить мертвой. Далее она больше не будет преобразовываться. Пользователю будет отправлен HTTP со статусом 410. Можно удалить из базы несуществующие страницы или объявить их мертвыми.

proxy|P

Отработка этого оператора приведет к вызову прокси-модуля, при этом запрос помечается внутренним. Для его применения требуется рабочий прокси-модуль, который должен быть установлен на сервер Apache. Проверить его наличие достаточно легко. Для этого необходимо обратить внимание на строчку mod_proxy.c. Если она имеется, то Апачи поддерживает данный модуль.

last|L

Это последний алгоритм, который будет отрабатываться. Если он будет установлен в качестве параметра, то следующие правила не будут выполняться. Он имеет именно такое написание в языке Perl, или break — на языке C. Этот оператор рекомендуется использовать при преобразовании корневого адреса в действительный.

Также существуют и другие параметры:

  • next|N — перезапуск преобразования;
  • chain|C — команда является связкой между правилами;
  • type|T — принудительное преобразование типов MIME в MIME;
  • nosubreq|NS — команда на отключение регистра;
  • qsappend|QSA — команда добавления в строку запроса;
  • noescape|NE — запрещает mod_write экранирование обычных правил;
  • passthrough|PT — позволяет обрабатывать вывод директив RewriteRule другими директивами, например такими, как Alias или Redirect.

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

Формат команды в директиве дополнительных правил имеет вид:

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

Если требуется указать несколько условий, которые должны проверяться по отношению к текущему URI, то в параметре flags указывается тип оператора. Напомним, он может быть логическим И или ИЛИ в зависимости от ожидаемого после преобразования результата. Mod Apache подразумевает проверку адресных строк на ряд совпадений. А именно, строка анализируется и выясняется, не является ли она файлом стилей или программой сценариев. Эти проверки нужны для того, чтобы исключить ошибки в преобразовании, из-за которых могут теряться различные данные в базе.

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

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

Как видно из примера, в последнем блоке имеется директива RewriteRule. В ней указан флаг [F]. Он говорит нам о том, что ничего делать не нужно, если адрес имеет окончание, указанное в скобках в этой строке.

Напомним, что существует несколько способов перенаправления:

  1. Простой редирект. Его особенность состоит в том, что допускается применение только с директивой RewriteRule.
  2. Внутренний Rewrite.
  3. Редирект и использованием GET-параметров.
  4. Перенаправление с полной версии сайта на мобильную. Он осуществляется путем замены всего содержимого в скобках на строку с указанием множества дополнительных переменных.

Чем отличается mod_rewrite в .htaccess и в VirtualHost?

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

  • В первую очередь отличие состоит в том, что используется вся строка от слеша до GET-параметров. information.html$ info.html

    Раскрытие ссылок

    Часто возникают ситуации, когда происходит так называемое раскрытие ссылок. Это происходит автоматически, так как они закодированы специальным образом. Иногда это действие не требуется. В таком случае программисты прибегают к использованию переменной %{THE_REQUEST}:.

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


    Правильный htaccess настройка и примеры. Для чего нужен .htaccess?

    Настройка htaccess, файла дополнительной конфигурации сервера, очень важна при работе с сайтом. Часто возникают вопросы: «что такое правильный htaccess?» или «как сделать 301 редирект htaccess?». Здесь мы разберемся в элементарных вопросах про работу с файлом конфигурации .htaccess, для чего нужен htaccess, 301 редирект и т.д.

    Что такое .htaccess и для чего нужен?

    Для начала стоит сказать пару слов о том, что такое веб-сервер, и как устроена его работа. Веб-сервер — (условно) это компьютер, на котором установленное специальное ПО, которое позволяет запускать и настраивать ваш сайт или веб-приложение для публикации в интернете. Короче говоря, с веб-сервером ваш сайт будет доступен по протоколам http и https. Самыми распространенными ПО для веб-серверов являются Apache и Nginx. Они бесплатные, и любой может поставить их у себя на компьютере и запустить.

    Htaccess где находится?

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

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

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

    Настройка веб-сервера производится через файлы конфигурации, которые хранятся в виде текстовых файлов в папках среди файлов веб-сервера. Например, основными для настройки файлами являются httpd.conf или apache.conf, в зависимости от настройки ОС.

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

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

    Самые полезные настройки htaccess

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

    301 редирект htaccess

    Самый частый вопрос при работе с веб-сервером — как прописать 301 редирект в htaccess

    Помните, что настройки, связанные с редиректом пишутся тут:

    <IfModule mod_rewrite.c>

    RewriteEngine On

    RewriteBase /

    </IfModule>

    Поэтому, либо найдите эти строчки у себя, либо же сделайте их сами. Итак, запись для 301 редиректа (это безопасный перманентный редирект со страницы на страницу):

    Redirect 301 /catalog/old-page/ /catalog/new-page/

    Если мы хотим направить весь каталог на сайте в новое место:

    Redirect 301 /old-catalog/ /new-catalog/

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

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

    То есть, если вы сделали редирект так:

    <IfModule mod_rewrite.c>

    RewriteEngine On

    RewriteBase /

    Redirect 301 /old-catalog/ /new-catalog/

    Redirect 301 /old-catalog/old-page-1 /new-catalog/new-page-2

    </IfModule>

    то при открытии страницы https://mysite.ru/old-catalog/old-page-1, вы получите ошибку, что страница недоступна. Это связано с тем, что он сначала произведет перенаправление на страницу /old-catalog/, так как она стоит выше в конфиг-файле. И потом при попытке открыть подстраницу возникнет ошибка. Это часто бывает, когда мы меняем имена своим страницам на новые.

    Правильно в данном случае будет делать запись от самой последней страницы и выше до каталога. Тогда все будет перенаправлять верно. Вот так:

    Redirect 301 /old-catalog/old-page-1 /new-catalog/new-page-2

    Redirect 301 /old-catalog/ /new-catalog/

    htaccess редирект на https

    Редирект с http на https через htaccess редко сейчас является необходимостью на современных хостингах. (.*)$ http://www.newsite.ru/$1 [R=301,L]

    Запретить доступ к директории

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

    Deny from all

    ErrorDocument 403 «Данный раздел находится в разработке»

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

    Если у вас CMS (Битрикс, WordPress и т.д.), то просто создайте папку с точным названием этого раздела и создайте htaccess там. Данный способ отлично подходит для разделов второго уровня (вида «site.ru/catalog/»). Во всех остальных случаях советуем вам использовать внутренние средства самой CMS. В 99% случаев там можно просто взять и выключить любой каталог и страницы в нем.

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

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

    <Files «myfile.php»>

    Deny From All

    </Files>

    Запретить доступ к разным типам файлов:

    <FilesMatch «\. index.php$ https://site.ru [R=301,L]

    Помните, что для работы этих настроек требуется в первую очередь Apache или доступ к его конфигурации на сервере. Иначе вам придется спрашивать у техподдержки хостинга, как вам поступать в той или иной ситуации. Не все команды здесь одинаково полезны. Бывает и так, что и хорошие хостинг-провайдеры частично открывают настройки для сервера, закрывая большинство полезных из них. Для этого в первую очередь советуем вам написать в техподдержку свои вопросы, если что-то не получается. Многие проблемы, описанные выше, решаются плагинами в WordPress, к примеру.

    Удачи вам в постижении .htaccess!

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

    Все возможности файла .htaccess знает далеко не  каждый веб-разработчик. Мы рассмотрим  основные моменты использования файла .htaccess

    1. Управление доступом к файлам и каталогам

    Защита паролем — это одно, но иногда нужно полностью блокировать доступ к определенному файлу или папке. Папка с файлами администратора, другие системые папки и файлы

    Чтобы сделать это, поместите данный код в файл. htaccess и сохраните его в каталоге к которому закрываете доступ:

    
    deny from all
    
    

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

    
    order deny,allow  deny from all  allow from 1.1.1.1
    
    

    где 1.1.1.1 — это ваш IP-адрес. Чтобы задать диапазон разрешенных  IP-адресов вы можете 4-ю часть ip-адреса. Например, написав вместо них «0/12»,

    например

    
    
    1.1.1.0/12
    
    

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

    
    
    Order deny,allow
    Deny from all
    allow from 1.1.1.1
    allow from 2.2.2. 2
    
    

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

    
    order allow,deny  deny from all
    
    

    Если вы хотите указать определенные IP-адреса которым надо запретить доступ, перечислите их при помощи allow from.

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

    
      Order Allow,Deny  Deny from all
    

    2. Запрет на просмотр директорий

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

    
    Options All -Indexes
    

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

    Options All +Indexes

    3. Ускорение времени загрузки за счет сжатия файлов

    Сжимать можно файлы любого типа. Например, для сжатия HTML-файлов добавьте код:

    
    AddOutputFilterByType DEFLATE text/html
    
    

    Для сжатия текстовых файлов используйте:

    
    AddOutputFilterByType DEFLATE text/plain
    

    Вы также можете сжать JavaScript или включить сжатие для других различных типов файлов командами:

    
    AddOutputFilterByType DEFLATE application/javascript AddOutputFilterByType DEFLATE application/rss+xml
    

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

    Не забудьте заменить yourdomain.com на имя вашего домена.
    5. Блокировка посетителей, перешедших с определенного домена

    Если вы не хотите видеть на своем сайте пользователей с конкретного домена, то вы можете запретить им доступ. Например, пользователей с нежелательных ресурсов (сайты для взрослых, хакерские сайты и т. д.) вы можете перенаправлять на страницу 403 Forbidden. Для этого необходимо включить mod_rewrite, хотя, как правило, он включен по умолчанию. Добавьте в .htaccess код:

    
    RewriteEngine on RewriteCond %{HTTP_REFERER} bannedurl1.com [NC,OR] RewriteCond %{HTTP_REFERER} bannedurl2.com [NC,OR] RewriteRule .* - [F]
    

    Вам необходимо заменить bannedurl1.com и bannedurl2.com доменами, которые вы хотите внести в черный список. Вы можете использовать флаг [NC], указывающий, что введенное доменное имя нечувствительно к регистру. Флаг [F] указывает на тип действия, в данном случае — отображение ошибки 403 Forbidden. badbot3″ bad_user Deny from env=bad_user

    Замените badbot1, badbot1 и т. д. именами ботов из вашего журнала. Это закроет посторонним программам доступ к вашему сайту.
    7. Кэширование файлов

    Кэширование файлов — еще один способ ускорить загрузку вашего сайта. Вот то, что вам нужно прописать в .htaccess:

    
     Header set Cache-Control "max-age=2592000"
    

    Вы можете добавить больше типов файлов (или удалить некоторые из них) в перечисленныq в данном примере список файлов. Вы также можете указать время сохранения файлов в кэше (в секундах) при помощи переменной max-age.
    8. Отключение кэширования для разных типов файлов

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

    
     Header unset Cache-Control
    

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

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

    
    AddType application/octet-stream .pdf AddType application/octet-stream .zip AddType application/octet-stream .mp3
    

    10. Переименование файла .htaccess

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

    
    AccessFileName htac.cess
    
    

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

    Если вы хотите установить главную страницу, отличную от стандартной (index.html, index.php, index.htm и т. д.), добавьте следующий код в файл .htaccess:

    
    DirectoryIndex mypage.html
    

    Замените mypage.html на URL страницы, которую вы хотите использовать в качестве главной.
    12. Перенаправление на защищенное соединение HTTPS

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

    
    RewriteEngine On RewriteCond %{HTTPS} !on RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
    

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

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

    
    php_value upload_max_filesize 12M
    

    Вы можете установить любое значение, в примере размер файла ограничен 12M (MБ). Помимо этого вы можете ограничить максимальный размер передаваемых при загрузке в PHP данных:

    
    php_value post_max_size 12M
    

    Вы можете заменить 12М на любое требуемое вам значение. Если вам не требуется постоянное выполнение скриптов, вы можете ограничить время их выполнения с помощью строки:

    
    php_value max_execution_time 120
    

    120 — время выполнения (в секундах), после которого скрипт будет остановлен, вы можете изменить это значение на любое другое. Наконец, если вы хотите ограничить время анализа скриптом исходных данных, используйте следующий код:

    
    php_value max_input_time 90
    

    Установите вместо 90 любое требуемое вам время (в секундах).
    14. Скрытие типов файлов

    Иногда нужно, чтобы пользователи не знали, какие типы файлов находятся на вашем сайте. Один из способов скрыть эту информацию — сделать так, чтобы все ваши файлы отображались как HTML или PHP файлы:

    
    ForceType application/x-httpd-php ForceType application/x-httpd-php
    

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

    apache, htaccess

    htaccess редирект — 301 редирект htaccess с одной страницы на другую и на другой сайт

    Файл .htaccess является сердцем веб сервера, который работает под управлением Apache. На данной странице вы найдете примеры 301 редиректа htaccess с одной страницы на другую и на другой сайт.

     
    Именно здесь определяется реакция сервера на различные действия посетителя. в данном уроке приводится несколько приемов для использования в файле .htaccess.

    Ниже вы найдете:

    • htaccess rewriterule примеры
    • filesmatch htaccess примеры
    • htaccess чпу примеры
    • 301 редирект примеры htaccess
    • пример htaccess для html
    • пример htaccess для wordpress

    Чтобы использовать вырезки кода, их надо просто скопировать в файл

    .htaccess

    который располагается в корневом каталоге вашего сайта.

    Предупреждение: перед редактированием файла .htaccess нужно всегда делать резервную копию работающего варианта!



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

    Считается, что замыкающий слеш в адресе URL очень хорошо помогает в области SEO сайта. /m/.*$ RewriteCond %{HTTP_ACCEPT} «text/vnd.wap.wml|application/vnd.wap.xhtml+xml» [NC,OR] RewriteCond %{HTTP_USER_AGENT} «acs|alav|alca|amoi|audi|aste|avan|benq|bird|blac|blaz|brew|cell|cldc|cmd-» [NC,OR] RewriteCond %{HTTP_USER_AGENT} «dang|doco|eric|hipt|inno|ipaq|java|jigs|kddi|keji|leno|lg-c|lg-d|lg-g|lge-» [NC,OR] RewriteCond %{HTTP_USER_AGENT} «maui|maxo|midp|mits|mmef|mobi|mot-|moto|mwbp|nec-|newt|noki|opwv» [NC,OR] RewriteCond %{HTTP_USER_AGENT} «palm|pana|pant|pdxg|phil|play|pluc|port|prox|qtek|qwap|sage|sams|sany» [NC,OR] RewriteCond %{HTTP_USER_AGENT} «sch-|sec-|send|seri|sgh-|shar|sie-|siem|smal|smar|sony|sph-|symb|t-mo» [NC,OR] RewriteCond %{HTTP_USER_AGENT} «teli|tim-|tosh|tsm-|upg1|upsi|vk-v|voda|w3cs|wap-|wapa|wapi» [NC,OR] RewriteCond %{HTTP_USER_AGENT} «wapp|wapr|webc|winw|winw|xda|xda-» [NC,OR] RewriteCond %{HTTP_USER_AGENT} «up.browser|up.link|windowssce|iemobile|mini|mmp» [NC,OR] RewriteCond %{HTTP_USER_AGENT} «symbian|midp|wap|phone|pocket|mobile|pda|psp» [NC] #————- Строка ниже исключает iPad RewriteCond %{HTTP_USER_AGENT} !^. (.*)$ /m/ [L,R=302]

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

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

    <Files *.xls> ForceType application/octet-stream Header set Content-Disposition attachment
    </Files>
    <Files *.eps> ForceType application/octet-stream Header set Content-Disposition attachment
    </Files>

    Междоменное использование шрифтов для FireFox

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

    <FilesMatch "\.(ttf|otf|eot|woff)$">
    <IfModule mod_headers.c>
    #Замените yourdomain.com на адрес вашего блога Header set Access-Control-Allow-Origin "http://yourdomain. com"
    </IfModule>
    </FilesMatch>

    Ускоряем сайт с помощью кэширования .htaccess

    Используя кэширование .htaccess можно существенно увеличить скорость сайта.

    # 1 ГОД
    <FilesMatch "\.(ico|pdf|flv)$">
    Header set Cache-Control "max-age=29030400, public"
    </FilesMatch>
    # 1 НЕДЕЛЯ
    <FilesMatch "\.(jpg|jpeg|png|gif|swf)$">
    Header set Cache-Control "max-age=604800, public"
    </FilesMatch>
    # 2 ДНЯ
    <FilesMatch "\.(xml|txt|css|js)$">
    Header set Cache-Control "max-age=172800, proxy-revalidate"
    </FilesMatch>
    # 1 МИНУТА
    <FilesMatch "\.(html|htm|php)$">
    Header set Cache-Control "max-age=60, private, proxy-revalidate"
    </FilesMatch>

    Отсекаем спам

    Страдаете от спама на вашем блоге WordPress? Конечно, плагин Akismet может оказать существенную помощь, но и файл .htaccess не останется в стороне от борьбы с заразой. Данный код предотвращает непосредственный доступ спам ботов к файлу  wp-comments-post. http://%{REMOTE_ADDR}/$ [R=301,L] </IfModule>

    Приводим различные фиды к единому формату

    Несколько лет назад использовались различные форматы фидов, такие как RSS, Atom или Rdf. В наши дни RSS определенно стал самым используемым. Данный код позволяет перенаправить все форматы фидов в один формат.

    # Заменяем URL на адрес своего блога
    <IfModule mod_alias.c> RedirectMatch 301 /feed/(atom|rdf|rss|rss2)/?$ http://example.com/feed/ RedirectMatch 301 /comments/feed/(atom|rdf|rss|rss2)/?$ http://example.com/comments/feed/
    </IfModule>

    Конфигурируем сайт для видео HTML5

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

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} !=/favicon. ico
    AddType video/ogg .ogv
    AddType video/ogg .ogg
    AddType video/mp4 .mp4
    AddType video/webm .webm
    AddType application/x-shockwave-flash swf

    Записываем ошибки PHP в журнал

    Вместо вывода ошибок PHP на страницах вашего сайта (что дает информацию потенциальным хакерам…) можно записывать их в журнал (файл .log), скрывая от посетителей.

    # отключаем вывод ошибок пользователям
    php_flag display_startup_errors off
    php_flag display_errors off
    php_flag html_errors off
    # заносим ошибки в журнал
    php_flag log_errors on
    php_value error_log /location/to/php_error.log

    Запускаем PHP в файлах jаvascript

    При разработке кода jаvascript иногда требуется использовать PHP в файлах .js.  Например, для получения данных из базы.

    AddType application/x-httpd-php .js
    AddHandler x-httpd-php5 .js
    <FilesMatch "\.(js|php)$">
    SetHandler application/x-httpd-php
    </FilesMatch>

    301 редирект с одной страницы на другую

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

    Редирект htaccess Битрикс

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

    Прописывать их надо между тегами:

    <IfModule mod_rewrite.c>
    </IfModule>

    Находящиеся в фале .htaccess

    Легких редиректов!

    примеры .htaccess · GitHub

    9(. (CZ|SK)$ 9(.*)$ - [Ж,Н] 9(.*)$ https://www.%1%{REQUEST_URI} [L,QSA,NE,R=301]
    #Не копировать и вставлять весь файл, найти только интересные части!
    #HTTP-аутентификация
    Тип аутентификации Базовый
    AuthName "Войти"
    AuthUserFile /path/to/.htpasswd
    Требовать действительного пользователя
    #Заголовки безопасности
    c>
    Набор заголовков X-XSS-защита "1; режим = блок"
    Набор заголовков X-Frame-Options SAMEORIGIN
    Набор заголовков X-Content-Type-Options nosniff
    Набор заголовков Strict-Transport-Security "max-age=15768000;" env=HTTPS
    #Expires Заголовки — статические файлы
    (?i:gif|jpe?g|png|js|css|swf|ico|woff|svg)$">
    ExpiresActive на
    ExpiresDefault "доступ плюс 365 дней"
    #Управление кешем - статические файлы
    Набор заголовков Cache-Control "max-age=31536000, public"
    #Gzip
    c>
    AddOutputFilterByType DEFLATE text/css application/x-javascript text/x-component text/html text/richtext image/svg+xml text/plain text/xsd text/xsl text/xml image/x-icon application/javascript 9(xmlrpc\.php)">
    запретить заказ, разрешить
    запретить все
    #JetPack + другие сети Automattic
    разрешить от 76.74.254.0/25
    разрешить от 216.151.209.64/26
    разрешить от 66.135.48.128/25
    разрешить от 69.174.248.128/25
    разрешить от 76. 74.255.0/25
    разрешить от 216.151.210.0/25
    разрешить от 76.74.248.128/25
    разрешить от 207.198.112.0/23
    разрешить от 207.198.101.0/25
    разрешить от 198.181.116.0/24
    разрешить от 192.0.64.0/18
    разрешить от 66.155.38.0/24
    разрешить от 209.15.21.0/24
    разрешить от 64.34.206.0/24
    #WP - разрешать wp-login. php только с указанного IP
    <Файлы wp-login.php>
    запретить заказ, разрешить
    разрешить от x.x.x.x
    отказать от всех
    #WP - заблокировать весь wp-admin - .htaccess в этой папке
    запретить заказ, разрешить
    разрешить от x.x.x.x
    отказать от всех
    <Файлы admin-ajax. php>
    заказ разрешить, запретить
    разрешить от всех
    удовлетворить любой
    <Файлы admin-post.php>
    заказ разрешить, запретить
    разрешить от всех
    удовлетворить любой
    #WP - блокировать PHP при загрузке 1-й способ - .htaccess в /wp-content/uploads/
    php$">
    заказ разрешить, запретить
    запретить все
    # Вставить правила перезаписи после директивы «RewriteEngine on»
    9(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,QSA,NE,R=301]
    Заголовок #CSP — предотвращение смешанного содержимого
    Набор заголовков Content-Security-Policy «upgrade-insecure-requests;»
    # разрешить страну с mod_geoip 2-й вариант
    GeoIPEnable На
    SetEnvIf GEOIP_COUNTRY_CODE CZ AllowCountry
    SetEnvIf GEOIP_COUNTRY_CODE SK AllowCountry
    запретить все
    разрешить из env=AllowCountry
    #заблокировать страну с mod_geoip 2 вариант
    c>
    GeoIPEnable На
    SetEnvIf GEOIP_COUNTRY_CODE RU BlockCountry
    SetEnvIf GEOIP_COUNTRY_CODE CN BlockCountry
    запретить из env=BlockCountry
    ##пример - разрешить wp-admin только из CZ/SK - .htaccess в папке /wp-admin
    #GeoIPEnable На
    #SetEnvIf GEOIP_COUNTRY_CODE CZ AllowCountry
    #SetEnvIf GEOIP_COUNTRY_CODE SK AllowCountry
    #запретить заказ, разрешить
    #разрешить из env=AllowCountry
    #запретить все
    #<Файлы admin-ajax. php>
    # Разрешить заказ, запретить
    # разрешить от всех
    # удовлетворить любой
    #
    #<Файлы admin-post.php>
    # Разрешить заказ, запретить
    # разрешить от всех
    # удовлетворить любой
    #
    # 301 редирект
    Перенаправление 301 /старый-url/новый-url
    #multirule https + www перенаправление - вариант example. com
    RewriteCond %{HTTPS} !на
    RewriteCond %{HTTP:X-Forwarded-Proto} !=https

    Давайте повеселимся с .htaccess [Примеры]

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

    .htaccess — это простой текстовый файл ASCII, размещенный в вашем каталоге www или в подкаталоге вашего каталога www . Вы можете создать или отредактировать этот файл в любом текстовом редакторе (например, Блокноте), а затем загрузить его в каталог, для которого вы хотите изменить настройки. Убедитесь, что файл загружен в формате ASCII (не BINARY) , и убедитесь, что права доступа к файлу установлены на 644 (rw-r–r–). Это позволяет серверу получить доступ к файлу, но не позволяет посетителям получить доступ к файлу через веб-браузер (угроза безопасности).

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

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

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

    Некоторые действия, которые вы можете выполнять с помощью .htaccess, включают:

    Настройка сообщений об ошибках

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

     ErrorDocument 500 /error.html 

    Переопределить параметры SSI

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

    Если вы хотите переопределить конфигурацию сервера по умолчанию, чтобы SSI работал с документами .html , вы можете создать файл с именем .htaccess и загрузить его (в ASCII режиме) в ваш основной каталог www . Добавьте следующие строки в ваш .htaccess файл:

     AddType text/html .html
    AddHandler server-parsed .html 

    Если вы хотите, чтобы документы .html и .htm анализировали SSI, создайте файл .htaccess со следующими строками:

     AddType text/html .html
    Обработанный сервером AddHandler .html
    AddHandler server-parsed .htm 

    Изменить домашнюю страницу по умолчанию

    Чтобы просматривать сайт, указав только доменное имя (например, https://www.hostingmanual.net) вместо указания точного имени файла страницы (например, https://www.hostingmanual.net/filename.html), у вас должна быть индексная страница в вашем каталоге www . Допустимые имена файлов по умолчанию для индексных страниц включают index.htm, index.html, index.cgi, index.shtml, index.php и т. д. Обратите внимание, что все они называются index.

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

    Использование .htaccess, вы можете определить дополнительные имена индексных файлов и/или изменить порядок приоритета. Чтобы задать индексную страницу как hieronymous.html, добавьте в файл .htaccess следующую строку:

     DirectoryIndex hieronymous.html 

    Это заставит сервер искать файл с именем hieronymous.html. Если он найдет этот файл, он отобразит его. Если он не найдет этот файл, он вернет ошибку 404 Missing Page.

    Чтобы изменить порядок приоритета, введите команду DirectoryIndex с несколькими именами файлов в одной строке. Порядок, в котором перечислены имена файлов (слева направо), определяет порядок приоритета. Например,

     DirectoryIndex hieronymous.html index.cgi index.php index.html 

    Включить просмотр каталогов

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

    Например, если вы сделаете HTTP-запрос к такому каталогу, как http://yourdomain.com/images/, будут перечислены все изображения в этом каталоге без необходимости в HTML-странице со ссылками.

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

     Options +Indexes 

    Как только вы добавите это, каталог снова будет полностью проиндексирован.

    Запретить пользователям доступ к вашему веб-сайту

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

     <Ограничение GET>
     запретить заказ, разрешить
     отказать от 123.456.789.000
     отказать от 456.78.90.
     отказаться от .aol.com
     разрешить от всех
     

    В приведенном выше примере пользователь с точным IP-номером 123.456.789.000 будет заблокирован; все пользователи в диапазоне IP-номеров от 456.78.90.000 до 456.78.90.999 будут заблокированы, и все пользователи, подключающиеся из America Online (aol.com), будут заблокированы. Когда они попытаются просмотреть ваш веб-сайт, им будет представлена ​​ошибка 403 Forbidden («У вас нет разрешения на доступ к этому сайту»).

    Перенаправить посетителей на новую страницу или каталог

    Допустим, вы полностью переделали свой веб-сайт, переименовав страницы и каталоги. Посетители старых страниц получат ошибку 404 File Not Found. Вы можете решить эту проблему с помощью перенаправления вызовов со старой страницы на новую страницу . Например, если ваша старая страница называлась oldpage. html, а newpage.html заменила эту страницу, добавьте следующую строку в файл .htaccess:

     Перенаправить постоянный /oldpage.html http://www.mydomain.com/newpage. HTML 

    Конечно, вы хотите заменить mydomain.com своим настоящим доменным именем. Теперь, когда посетитель вводит http://www.mydomain.com/myoldpage.html, он будет автоматически перенаправлен на http://www.mydomain.com/mynewpage.html.

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

     Перенаправить постоянный /старый каталог http://www.mydomain.com/newdirectory/ 
    каталог указывается с использованием системного пути относительно вашего каталога www, а абсолютный URL-адрес указывает новую страницу или каталог. 9http://(www.)?mydomain.com/.*$ [NC] RewriteRule .(gif|jpg)$ - [F]

    Замените mydomain.com вашим фактическим доменным именем. С этим кодом ваши изображения будут отображаться только тогда, когда посетитель просматривает http://mydomain. com. Изображения, связанные с другими доменами, будут отображаться как неработающие изображения.

    Если вы чувствуете себя особенно неприятно, вы даже можете предоставить альтернативное изображение для отображения на страницах с горячими ссылками, например, изображение с надписью «Воровство — это плохо… посетите http://mydomain.com, чтобы увидеть реальную картину». это место здесь». Используйте этот код, чтобы сделать это: 9http://(www.)?mydomain.com/.*$ [NC] RewriteRule .(gif|jpg)$ http://www.mydomain.com/dontsteal.gif [R,L]

    На этот раз замените mydomain.com на ваше доменное имя, а dontsteal.gif на имя вашего домена. имя файла изображения, которое вы создали, чтобы предотвратить хотлинкинг.

    Запрет просмотра файлов .htaccess или других файлов

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

     
    порядок разрешить, запретить
    отрицать от всех
     

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

    Правила перезаписи .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:// 9с 1176 по 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 и управляемого 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

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

    Вордпресс Эксперт

    06 сентября 2022 г.

    Домантас Г.

    4 минуты чтения

    Начните бесплатный 7-дневный курс электронной почты по WordPress

    Когда вы устанавливаете WordPress на свою учетную запись хостинга, программное обеспечение добавляет список каталогов на ваш веб-сервер. От wp-admin , в котором хранятся административные файлы, до каталога wp-content , где хранятся темы и плагины — они поддерживают работу ваших страниц.

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

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

    Что такое файл .htaccess?

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

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

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

    • Настроить перенаправления — вы можете установить перенаправление 302 на свой временный домен или перенаправление 301 для перемещения всего HTTP-трафика на ваш сайт HTTPS.
    • Переписать URL-адрес — создавайте SEO-дружественные URL-адреса, чтобы улучшить индексацию поисковыми системами и возможности сканирования.
    • Включить защиту от хотлинков — файл .htaccess позволяет предотвратить хотлинкинг с вашего сайта и защитить пропускную способность.
    • Изменить ограничение доступа — запретить определенным IP-адресам доступ к вашему сайту, сделать файлы определенного типа недоступными или полностью ограничить доступ к вашему сайту.
    • Подавать настраиваемые страницы ошибок — настроить сообщение, которое появляется на вашем 404 ошибка не найдено страниц.
    • Защищать паролем каталоги — приказать каждому каталогу требовать действительного пользователя, установив пароль и создав файл .htpasswd .

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

    Как найти файл .htaccess

    Когда вы устанавливаете WordPress на веб-сервере Apache, файл .htaccess автоматически добавляется в ваш корневой каталог, обычно помечаемый как public_html или www . Однако, поскольку файл обычно скрыт, вам нужно будет использовать параметр Показать скрытые файлы , чтобы найти его.

    В следующих разделах вы узнаете, как найти файл .htaccess вашего сайта WordPress как в hPanel, так и в cPanel Hostinger.

    hPanel

    Вот как найти и отредактировать файл .htaccess с помощью диспетчера файлов Hostinger:

    1. Получите доступ к панели управления hPanel. Перейти к Файлы меню и нажмите Диспетчер файлов .
    1. По умолчанию файл .htaccess не скрыт в hPanel. Таким образом, просто нажмите на каталог public_html и найдите файл, помеченный как .htaccess .
    1. Откройте файл и его содержимое, щелкнув правой кнопкой мыши и выбрав Открыть или Редактировать .

    cPanel

    Если вы используете cPanel, процесс более или менее похож:

    1. Войдите в свою учетную запись cPanel. Найдите раздел Files и нажмите File Manager .
    1. Доступ к каталогу public_html . Нажмите на папку WordPress. В данном случае он помечен как wp . Затем найдите файл .htaccess .
    1. Если вы не можете найти файл . htaccess , перейдите в Настройки в верхнем правом меню и установите флажок Показать скрытые файлы , чтобы включить просмотр.
    1. Система начнет извлекать содержимое ваших каталогов, и вскоре вы увидите файл .htaccess в списке.
    1. Просто нажмите на файл и нажмите кнопку Изменить , чтобы открыть его.

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

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

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

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

    Пользователи hPanel найдут кнопку New File в правом верхнем углу страницы File Manager .

    Если вы используете cPanel, выберите 9index.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d Правило перезаписи. /index.php [Л] # END WordPress

    После добавления кода нажмите Создать , чтобы сохранить изменения. Имейте в виду, что код универсален для всех сайтов WordPress. Однако другие системы управления контентом (CMS) будут иметь другой код для файлов .htaccess .

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

    Заключение

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

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

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

    В этом руководстве вы узнали, как найти файлы .htaccess на вашем сервере. Если файлы .htaccess по какой-либо причине отсутствуют, вам необходимо создать их вручную и загрузить на свой сервер. Просто создайте новый файл в каталоге public_html, пометьте его как 9.1012 .htaccess и введите код по умолчанию.

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

    Узнайте о других передовых технологиях WordPress

    Руководство «Все, что вам нужно знать» о базе данных WordPress
    Руководство по GDPR для WordPress
    Как добавить настраиваемые поля WordPress
    Как настроить разбиение на страницы WordPress
    Как создать шорткод в WordPress
    Как оптимизировать изображения в WordPress
    Как ускорить сайт WordPress

    Домантас возглавляет группы по контенту и SEO, предлагая свежие идеи и нестандартные подходы. Обладая обширными знаниями в области SEO и маркетинга, он стремится распространить информацию о Hostinger во всех уголках мира. В свободное время Домантас любит оттачивать навыки веб-разработки и путешествовать по экзотическим местам.

    Еще от Domantas G.

    примеры htaccess (безопасность) - Joomla! Документация

    Содержание

    • 1 Предлагаемый мастер-файл htaccess
    • 2 Другие полезные настройки
    • 3 Блокировать плохие пользовательские агенты
    • 4 Внешние ссылки

    Авторство этого файла .htaccess принадлежит Рональду ван ден Хиткампу, Николасу Дионисопулосу, g1smd и другим, перечисленным

    Рекомендуемый основной файл htaccess[править]

    Это можно обсудить в этой теме на форуме

    Предупреждение: читайте заштрихованные области! Неправильные настройки на некоторых серверах могут привести к ошибкам 500 страниц. Единственный способ выяснить, какие правила или разделы вызывают ошибки, — это методом проб и ошибок. г.

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

    Joomla!

    2.5

    Experimental

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

     ################################################ ################################
    ## Мастер . htaccess
    ##
    ## Версия 2.5 (предлагается) — 16 мая 2011 г.
    ##
    ## ----------
    ## Этот файл предназначен для использования в качестве файла шаблона .htaccess для вашего нового
    ## сайтов, повышая безопасность и производительность вашего сайта. Это не предназначено для
    ## можно просто добавить на свой сайт. Вы должны пройти через все его
    ## разделы и измените его, чтобы он соответствовал вашему сайту. В частности, все случаи
    ## example.com и example\.com следует заменить вашим настоящим доменным именем.
    ##
    ## Некоторые разделы слишком разборчивы и могут вызвать проблемы с законными запросами.
    ## Вы несете полную ответственность за их отключение или написание правил-исключений
    ## для ваших запросов. В частности, раздел расширенной защиты сервера будет
    ## вызывают проблемы с некоторыми минификаторами, eXtplorer, VirtueMart и другими расширениями
    ## сессий, использующих нестандартные скрипты в качестве точек входа. Вы должны добавить
    ## исключения для них вручную.
    ##
    ## Некоторые разделы — в зависимости от конфигурации вашего сервера — могут привести к тому, что ваш сайт
    ## для выдачи 500 Internal Server Error.  Единственный способ выяснить, какой из них
    ## вызывает это методом проб и ошибок.
    ##
    ## Большое спасибо Брайану Тиману, Кену Краудеру, Радеку Суски и Фотису
    ## Evangelou за то, что поделились своими правилами .htaccess со всем миром и вдохновили
    ## создание этого файла. Особая благодарность Джону Брауну за то, что он поделился своим
    ## изучите и помогите мне улучшить этот файл.
    ##
    ## Отдельное спасибо Джону за его замечания и g1smd за то, что
    ## время для оптимизации скорости файла.
    ##
    ## Обычно целесообразно удалять комментарии из файла при его использовании
    ## на действующем хосте, чтобы свести к минимуму время парсинга.
    ##
    ## ------------------------------------------------ ----------------------
    ## Вы хотите настроить этот файл .htaccess несколькими щелчками мыши?
    ## Admin Tools Professional от AkeebaBackup.com делает это и многое другое.
    ##
    ## Узнайте больше: http://www.akeebabackup.com/software/admin-tools.html
    ## ------------------------------------------------ ----------------------
    ##
    ## Получайте удовольствие, будьте в безопасности. 
    ##
    ## Николас К. Дионисопулос
    ## Ведущий разработчик, AkeebaBackup.com
    ##
    ## ЖУРНАЛ ИЗМЕНЕНИЙ:
    ## Версия 2.5 (предлагается) (16 мая 2011 г.)
    ## - Заполнители для пользовательского кода. Исправление порядка набора правил.
    ## Версия 2.4 (18 апреля 2011 г.)
    ## - Десятки оптимизаций скорости и множество логических и синтаксических исправлений.
    ## Версия 2.3 (18 ноября 2010 г.)
    ## - Добавлено .ico в правила сквозного доступа для загрузки фавиконов
    ## Версия 2.2 (25 октября 2010 г.)
    ## - Ошибка в правиле tmpl=component
    ## Версия 2.1 (19 октября2010 г.)
    ## - перенаправление index.php на root приведет к уничтожению некоторых AJAX-запросов
    ## - фильтрация рефереров была испорчена
    ## - Упрощенный и более подробный код пасхального яйца PHP (спасибо, Джон!)
    ## - Фильтр tp/template/tmpl не был тщательным и убивал некоторые компоненты
    ## - Оптимизированная Joomla! основной раздел SEF
    ## - Фильтры ботов и оптимизация GZip никогда не будут работать для динамического контента
    ## - Оптимизация срока действия контента стала более оптимизированной
    ## - Добавлено правило ETag
    ##
    ################################################### ##############################
    ########## Начало — RewriteEngine включен
    RewriteEngine включен
    ########## End - RewriteEngine включен
    ########## Начало - RewriteBase
    # Раскомментируйте следующую строку, если URL-адрес вашего веб-сервера
    # не имеет прямого отношения к физическим путям к файлам. 
    # Обновите свою Joomla! Каталог (только / для root)
    # Переписать Базу /
    ########## Конец — RewriteBase
    ########## Начало - Нет списков каталогов
    ## Примечание: +FollowSymlinks может вызвать проблемы, и вам, возможно, придется удалить его.
    Индексигнорировать *
    Опции +FollowSymLinks All -Indexes
    ########## Конец – Нет списков каталогов
    ########## Начало - порядок выполнения файлов, by Komra.de
    DirectoryIndex index.php index.html
    ########## End - Порядок выполнения файла
    ########## Начало - Оптимизация ETag
    ## Это правило создаст ETag для файлов только на основе модификации
    ## метки времени и их размер. Это творит чудеса, если вы используете rsync'ed
    ## серверы, где количество инодов одинаковых файлов различается.
    ## Примечание. Это может вызвать проблемы на вашем сервере, и вам может потребоваться удалить его.
    Размер FileETag MTime
    ########## Конец — Оптимизация ETag
    ########## Начало - Общие хакерские инструменты и блокировка пропускной способности
    ## Авторы: SigSiu.net и @nikosdion.
    # Эта строка также отключает Akeeba Remote Control 2. 5 и более ранние версии
    SetEnvIf пользовательский агент "Indy Library" stayout=1
    # ПРЕДУПРЕЖДЕНИЕ: Отключение wget также заблокирует наиболее распространенный метод
    # запуск заданий CRON. Удалите, если у вас есть проблемы с заданиями CRON.
    SetEnvIf пользовательский агент "Wget" stayout=1
    # Следующие правила относятся к инструментам загрузки, перегружающим полосу пропускания.
    SetEnvIf пользовательский агент "libwww-perl" stayout=1
    SetEnvIf пользовательский агент "Скачать демона" stayout=1
    SetEnvIf пользовательский агент "GetRight" stayout=1
    SetEnvIf пользовательский агент "GetWeb!" пребывание в стороне=1
    SetEnvIf пользовательский агент "Go!Zilla" stayout=1
    SetEnvIf пользовательский агент "Go-Ahead-Got-It" stayout=1
    SetEnvIf пользовательский агент "GrabNet" stayout=1
    SetEnvIf пользовательский агент "TurnitinBot" stayout=1
    # Эта строка запрещает доступ ко всем вышеперечисленным инструментам
    запретить из env=stayout
    ########## Конец — Общие хакерские инструменты и блокировка пропускной способности
    ########## Начало - Автоматическое сжатие ресурсов
    # Сжатие текста, html, javascript, css, xml, слава Komra. de
    # Может закрыть доступ к вашему сайту для старых версий Internet Explorer
    # Сервер должен быть скомпилирован с mod_deflate, иначе он отправит ошибку HTTP 500.
    # mod_deflate недоступен в Apache 1.x. Может использоваться только с сервером Apache 2.x.
    # AddOutputFilterByType теперь не поддерживается Apache. Используйте mod_filter в будущем.
    AddOutputFilterByType DEFLATE текст/обычный текст/html текст/текст XML/приложение css/приложение xml/приложение xhtml+xml/приложение rss+xml/приложение javascript/x-javascript
    ########## End - Автоматическое сжатие ресурсов
    ########## Начало — добавьте необязательный неверный пользовательский агент или код блокировки IP
    #
    # Если вам нужно заблокировать определенные пользовательские агенты или IP-адреса и
    # другие подписи, поместите этот код сюда. Убедитесь, что правила используют
    # правильный синтаксис RewriteRule и флаг [F].
    #
    ########## End — добавьте необязательный неверный пользовательский агент или код блокировки IP
    ########## Начало. Перепишите правила, чтобы заблокировать некоторые распространенные эксплойты. s]*s)+cript.*(>|%3E) [NC,OR]
    # Заблокировать любой скрипт, пытающийся установить переменную PHP GLOBALS через URL
    RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9А-Я]{0,2}) [ИЛИ]
    # Заблокировать любой скрипт, пытающийся изменить переменную _REQUEST через URL
    RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
    # Вернуть заголовок 403 Forbidden и показать содержимое корневой домашней страницы
    Правило перезаписи .* index.php [F]
    #
    ########## Конец — переписать правила, чтобы заблокировать некоторые распространенные эксплойты
    ########## Начало - Защита от внедрения файлов, автор SigSiu.net
    RewriteCond %{REQUEST_METHOD} GET
    RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=http:// [ИЛИ]
    RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=(\.\.//?)+ [ИЛИ]
    RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=/([a-z0-9_.]//?)+ [NC]
    Правило перезаписи .* - [F]
    ########## Конец — защита от внедрения файлов
    ########## Начало — Базовый антиспам-фильтр, автор SigSiu.net
    ## Я убрал некоторые общеупотребительные слова, настройте по своему вкусу
    ## Этот код использует PCRE и работает только с Apache 2. x.
    ## Этот код НЕ будет работать с серверами Apache 1.x.
    RewriteCond %{QUERY_STRING} \b(ambien|синий\разлив|сиалис|кокаин|эякуляция|эректильная)\b [NC,OR]
    RewriteCond %{QUERY_STRING} \b(эрекция|худия|huronriveracres|импотенция|левитра|либидо)\b [NC,OR]
    RewriteCond %{QUERY_STRING} \b(lipitor|фентермин|pro[sz]ac|сандьяуэр|трамадол|troyhamby)\b [NC,OR]
    RewriteCond %{QUERY_STRING} \b(ультрам|уникаука|валиум|виагра|викодин|ксанакс|ypxaieo)\b [NC]
    ## Примечание: окончательный RewriteCond НЕ должен использовать флаг [ИЛИ].
    Правило перезаписи .* - [F]
    ## Примечание. Предыдущие строки представляют собой «сжатую» версию.
    ## фильтров. Вы можете добавить свои собственные фильтры как:
    ## RewriteCond %{QUERY_STRING} \bbadword\b [NC,OR]
    ## где «плохое слово» — это слово, которое вы хотите исключить.
    ########## End — Базовый антиспам-фильтр, автор SigSiu.net
    ########## Начало — расширенная защита сервера — строки запроса, реферер и конфигурация
    # Расширенная защита сервера, версия 3.2 - май 2011 г.
    # Николас К.  Дионисопулос
    ## Запретить пасхальные яйца PHP (может использоваться в атаках с отпечатками пальцев для определения
    ## ваша версия PHP). См. http://www.0php.com/php_easter_egg.php и
    ## http://osvdb.org/12184 для получения дополнительной информации
    RewriteCond %{QUERY_STRING} \=PHP[0-9почта http://mail.google.com/a/example.com [R,L]
    ########## Конец – перенаправление Google Apps
    ########## Начало - Пользовательские перенаправления
    #
    # Если вам нужно перенаправить некоторые страницы, поместите этот код сюда. Убедитесь, что
    # перенаправления используют правильный синтаксис RewriteRule и флаги [R=301,L].
    #
    ########## Конец — Пользовательские переадресации
    ########## Начало — перенаправление (www.)olddomain.com на www.example.com
    ## Примечание: olddomain.com — это ваше старое доменное имя, с которого вы хотите перенаправить,
    ## тогда как www.example.com — это новое доменное имя, на которое вы хотите перенаправить.
    ## Измените эти имена, чтобы они отражали вашу текущую конфигурацию. Помните, это
    ## небольшая часть файла должна быть помещена в www. .]*|\.(php|html?|feed|pdf|vcf|raw|ini|zip|json|файл))$ [NC]
    # и запрошенный путь и файл не соответствуют напрямую физическому файлу
    RewriteCond %{REQUEST_FILENAME} !-f
    # и запрошенный путь напрямую не соответствует физической папке
    RewriteCond %{REQUEST_FILENAME} !-d
    # внутренне переписываем запрос в скрипт index.php
    Правило перезаписи .* index.php [L]
    #
    ########## Конец - Joomla! основной раздел SEF
    ########## Начало — оптимальное время истечения по умолчанию
    ## Примечание: это может вызвать проблемы, и вам, возможно, придется закомментировать это
    ## помещаем решетку перед строками этого раздела
    
    # Включить контроль срока действия
    ExpiresActive On
    # Срок действия по умолчанию: 1 час после запроса
    ExpiresDefault "сейчас плюс 1 час"
    # Срок действия CSS и JS: 1 неделя после запроса
    ExpiresByType text/css "сейчас плюс 1 неделя"
    Приложение ExpiresByType/javascript "сейчас плюс 1 неделя"
    Приложение ExpiresByType/x-javascript "сейчас плюс 1 неделя"
    # Срок действия файлов изображений: 1 месяц после запроса
    ExpiresByType image/bmp "сейчас плюс 1 месяц"
    ExpiresByType image/gif "сейчас плюс 1 месяц"
    ExpiresByType image/jpeg "сейчас плюс 1 месяц"
    ExpiresByType image/jp2 "сейчас плюс 1 месяц"
    ExpiresByType image/pipeg "сейчас плюс 1 месяц"
    ExpiresByType image/png "сейчас плюс 1 месяц"
    ExpiresByType image/svg+xml "сейчас плюс 1 месяц"
    ExpiresByType image/tiff "сейчас плюс 1 месяц"
    ExpiresByType image/vnd. microsoft.icon «сейчас плюс 1 месяц»
    ExpiresByType image/x-icon "сейчас плюс 1 месяц"
    ExpiresByType image/ico "сейчас плюс 1 месяц"
    Изображение/значок ExpiresByType "сейчас плюс 1 месяц"
    ExpiresByType text/ico "сейчас плюс 1 месяц"
    ExpiresByType application/ico "сейчас плюс 1 месяц"
    ExpiresByType image/vnd.wap.wbmp "сейчас плюс 1 месяц"
    ExpiresByType application/vnd.wap.wbxml "сейчас плюс 1 месяц"
    ExpiresByType application/smil "сейчас плюс 1 месяц"
    # Срок действия аудиофайлов: 1 месяц после запроса
    ExpiresByType audio/basic "сейчас плюс 1 месяц"
    ExpiresByType audio/mid "сейчас плюс 1 месяц"
    ExpiresByType audio/midi "сейчас плюс 1 месяц"
    ExpiresByType audio/mpeg "сейчас плюс 1 месяц"
    ExpiresByType audio/x-aiff "сейчас плюс 1 месяц"
    ExpiresByType audio/x-mpegurl "сейчас плюс 1 месяц"
    ExpiresByType audio/x-pn-realaudio "сейчас плюс 1 месяц"
    ExpiresByType audio/x-wav "сейчас плюс 1 месяц"
    # Срок действия видеофайлов: 1 месяц после запроса
    ExpiresByType application/x-shockwave-flash "сейчас плюс 1 месяц"
    ExpiresByType x-world/x-vrml "сейчас плюс 1 месяц"
    ExpiresByType video/x-msvideo "сейчас плюс 1 месяц"
    ExpiresByType video/mpeg "сейчас плюс 1 месяц"
    ExpiresByType video/mp4 "сейчас плюс 1 месяц"
    ExpiresByType video/quicktime "сейчас плюс 1 месяц"
    ExpiresByType video/x-la-asf "сейчас плюс 1 месяц"
    ExpiresByType video/x-ms-asf "сейчас плюс 1 месяц"
    
    ########## End - Оптимальное время экспирации 9(java|curl|wget) [NC, ИЛИ]
     RewriteCond %{HTTP_USER_AGENT} (winhttp|HTTrack|clshttp|архиватор|загрузчик|электронная почта|сбор|извлечение|захват|майнер) [NC,OR]
     RewriteCond %{HTTP_USER_AGENT} (libwww-perl|curl|wget|python|nikto|scan) [NC,OR]
     RewriteCond %{HTTP_USER_AGENT} (<|>|’|%0A|%0D|%27|%3C|%3E|%00) [NC,OR]
     
     # Блокировать инъекции MySQL
     RewriteCond %{QUERY_STRING} (;|<|>|'|”|\)|%0A|%0D|%22|%27|%3C|%3E|%00). *(/\*|объединение|выбрать |insert|cast|set|declare|drop|update|md5|benchmark) [NC,OR]
     Условие перезаписи %{QUERY_STRING} \.\./\.\. [ИЛИ ЖЕ]
     RewriteCond %{QUERY_STRING} (localhost|loopback|127\.0\.0\.1) [NC,OR]
     RewriteCond %{QUERY_STRING} \.[a-z0-9] [НЗ, ИЛИ]
     RewriteCond %{QUERY_STRING} (<|>|’|%0A|%0D|%27|%3C|%3E|%00) [NC]
     # Примечание: окончательный RewriteCond НЕ должен использовать флаг [ИЛИ].
     # Вернуть 403 Запрещенная ошибка.
     RewriteRule .* index.php [F] 

    Блокировать плохие пользовательские агенты[править]

     ########## Блокировать плохие пользовательские агенты
     ## Следующий список может включать боты, которые больше не существуют или не представляют проблемы
     ## для вашего сайта. Список всегда будет неполным, и поэтому разумно
     ## следите за обсуждениями в одном из многочисленных списков рассылки по безопасности или на форуме
     ## например, http://www.webmasterworld.com/search_engine_spiders/
     ## Также неразумно полагаться на этот список как на ЕДИНСТВЕННЫЙ механизм безопасности. Зевс
     ## Примечание: окончательный RewriteCond НЕ должен использовать флаг [ИЛИ].
     ## Вернуть 403 Запрещенная ошибка.
     Правило перезаписи .* - [F] 

    Внешние ссылки[править]

    .htaccess архив тегов @ perishablepress.com

    https://github.com/nikosdion/master-htaccess Предлагаемый «мастер htaccess» (от Николаса v3.3) ПРОЧИТАЙТЕ введение Николаса!]

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

    Основное обсуждение ошибок и улучшений, обсуждаемых на: http://forum.joomla.org/viewtopic.php?f=432&t=549841

    Вторичное обсуждение также было на: http://snipt.net/g1smd/joomla-patch/

    Новый предлагаемый файл: http://code.google.com/p/joomla-master-htaccess/source/list и по адресу: https://github.com/nikosdion/master-htaccess.

    Объяснение изменений, построчно:

    http://codereview.appspot.com/4312049/diff/1/joomla-master-htaccess. txt

    http://codereview.appspot.com/42/diff/1/joomla-master-htaccess.txt

    http://codereview.appspot.com/42/diff/8001/joomla-мастер-htaccess.txt

    http://codereview.appspot.com/4370051/diff/3/joomla-master-htaccess.txt

    http://codereview.appspot.com/4314051/diff/1001/joomla-master-htaccess.txt

    http://codereview.appspot.com/4430062/diff/1/joomla-master-htaccess.txt

    http://codereview.appspot.com/4528051/diff/1/joomla-master-htaccess.txt

    Учебник по программированию Apache Htaccess и примеры

    Насколько я видел и испытал, многие разработчики всегда стараются избегать , используя htaccess в своих веб-приложениях на основе среды Linux. За этой традицией также стоит веская причина. если вы пойдете и начнете читать документацию apache mod_rewrite, вы найдете строку, в которой говорится: «Цена, которую вы должны заплатить, — это принять сложность, потому что основным недостатком mod_rewrite является то, что его нелегко понять и использовать для новичков». Итак, как правило, если вы заинтересованы в совершенствовании программирования htaccess, вам следует запастись терпением и постоянно практиковаться и экспериментировать. Сегодня в этом уроке я постараюсь сосредоточиться на самых основах программирования htaccess, чтобы помочь вам быстрее начать обучение. Я предполагаю, что вы либо настоящий новичок, либо хотите получить более четкое представление об основах.

    Что такое Htaccess?

    Htaccess — это имя пользовательского файла конфигурации сервера по умолчанию , используемого на HTTP-серверах, размещенных на Apache. Если вы использовали Apache на своем локальном компьютере, то вы, возможно, знаете о файле с именем «httpd.conf», в котором хранятся конфигурации, содержащие некоторые инструкции о том, как Apache должен будет обрабатывать запрос. Файл Htaccess на самом деле является версией уровня пользователя для переопределения этих конфигураций. Для общего хоста общие конфигурации совпадают с этим «httpd.conf», но требования могут различаться от пользователя к пользователю. Эти файлы htaccess помогают пользователям выполнять свои собственные требования. Его также можно назвать файлом конфигурации уровня каталога. Потому что мы можем использовать этот файл в любом количестве каталогов, которые нам нравятся, и использовать разные настройки конфигурации для каждого из них.

    Физическое имя этого файла — «.htaccess». Если вы все время пользуетесь Windows, вы можете понять это как файл без имени и с расширением «htaccess». На самом деле, это соглашение, основанное на Linux, где все файлы .name(dot name) рассматриваются как скрытые файлы. Вы можете создать этот файл в операционной системе на базе Linux очень хорошо, без каких-либо проблем. Однако в операционной системе Windows вы столкнетесь с проблемой при создании нового файла «.htaccess» . Попробуйте создать новый текстовый файл, а затем переименовать его, он покажет вам сообщение об ошибке Windows с упоминанием «Вы должны ввести имя файла». Чтобы избежать этой проблемы, просто откройте файл в блокноте, перейдите в «Файл-> Сохранить как», затем назовите его «. htaccess» и сохраните, это должно работать нормально.

    Использование файла Htaccess:

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

    • Переписать URL-адреса: Это наиболее распространенное использование файла .htaccess. в понятный серверному сценарию формат. Как правило, это помогает легко использовать URL-адреса, удобные для поисковых систем, на веб-сайте без участия какого-либо кодирования серверного скрипта, когда он передает запрос URL-адреса, дружественного поисковой системе, соответствующему серверному скрипту / обработчику запросов с правильно отформатированными данными, существующими в URL-адресе.
    • Аутентификация/авторизация Цель: На вашем сервере вы можете захотеть разработать несколько новых приложений/обновить демонстрацию существующих приложений, и вы не хотите, чтобы эти каталоги/поддомены были найдены анонимными пользователями/посетителями/поисковыми системами. Htaccess предоставляет базовый механизм безопасности (имя пользователя/пароль) для защиты этого содержимого от публичного доступа.
    • URL-адреса перенаправления: Вы также можете использовать команды htaccess для перенаправления определенных страниц в другое место (другие внутренние/внешние ссылки).

    Как вы видите заголовок сообщения, я в первую очередь сосредоточусь на параметрах «mod_rewrite», особенно в этом руководстве, поскольку это наиболее распространенное использование, с которого нужно начинать всем.

    Включить режим перезаписи Htaccess в локальной среде Windows/XAMPP:

    Я использую xampp в среде Windows в качестве локальной серверной среды для разработки. Во время работы я заметил, что по умолчанию xampp не включает mode_rewrite. Мы должны сделать это вручную. Итак, я делюсь советами, как это сделать, чтобы вы могли легко это сделать.

    Перейдите в корневой каталог xampp, среди прочего, найдите каталог «\apache\conf» и перейдите туда. Там вы увидите файл «httpd.conf». Откройте его с помощью блокнота, используйте параметр поиска блокнота для поиска слова «mod_rewrite». Вы найдете несколько файлов. Некоторые из них будут иметь «#» в начале строки. Это означает, что эти строки инструкций деактивированы («#» для синтаксиса комментариев, аналогичного «//» в языках программирования php/c#/java и т. д.). Активируйте эти строки, просто удалив символ «#». После того, как это будет завершено, вы также должны проверить, включена ли опция переопределения или нет. Для этого найдите слово «AllowOverride». Получив его, сосредоточьтесь на следующем слове. Если это «Нет», измените это на «Все». Теперь вы должны хорошо использовать правила htaccess mod_rewrite.

    Базовые файловые структуры Htaccess:

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

    .
    
        RewriteEngine включен
        Переписать Базу /
        
        # не перезаписывать запросы на доступ к файлам и каталогам
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        
        # Все остальные правила здесь
    
    
    
    
        # обрабатывает случаи, когда перезапись не включена
        Документ об ошибке 404 /404.php
    
     9([\da-z-]+)$ product.php?product_name=$1
     

    Теперь мы также рассмотрим обратный случай, когда нам нужно будет преобразовать URL-адрес на основе строки запроса в правильный обработчик. Иногда это необходимо, особенно в приложении на основе фреймворка, где фреймворк определяет определенный тип структуры URL-адреса для доступа к обработчику запросов. Codeigniter — хороший пример такого фреймворка. Определенная структура URL-адреса: {controller_name}/{function_name}/{parameter(s)} (Codeigniter имеет этот механизм, интегрированный с фреймворком. Если вы являетесь разработчиком этого фреймворка и у вас возникли проблемы с переписыванием/маршрутизацией URL-адресов, вы можете обратиться к мой еще один учебник по маршрутизации codeigniter). Если нам нужно заставить работать строку запроса для подачи в конкретную функцию контроллера, нам понадобятся такие подсказки: 9send-email\.html/?(.*)$ /path_to/index.php/?имя_контроллера/имя_функции/%1 [L]

    Методы авторизации в Htaccess:

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

    Основной тип авторизации
    AuthName "Моя защищенная область"
    AuthUserFile /путь/к/. htpasswd
    Требовать действительного пользователя
     

    файл паролей может быть любым файлом, содержащим действительную пару имя пользователя/пароль, например:

    тест: encrypted_passoword1
    тест: encrypted_passoword2
     

    Обратите внимание, что имя пользователя и пароль разделены символом «:». Часть имени пользователя представляет собой обычный текст, а часть пароля зашифрована. Итак, вы должны использовать какой-нибудь инструмент генератора паролей htaccess, чтобы получить пароли. Кроме того, лучше всего использовать имена файлов паролей, такие как «.htxxx», потому что к файлам такого типа нет доступа из http-запросов/браузеров (в противном случае, если кто-то каким-то образом знает имя файла, он может легко получить к нему доступ через http и вызвать безопасность уязвимости).

    URL-адреса перенаправления В Htaccess:

    Перенаправление довольно просто и почти похоже на маршрутизацию/перезапись запросов. Вот пример:

     RewriteRule /path/to/old_file1.

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

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