Файл .htaccess – это файл конфигурации, который определяет, как веб-сервер отвечает на запросы. WordPress .htaccess файл может быть использован для повышения вашего сайта производительности, безопасности и удобства использования. Он поддерживается большинством популярных веб-серверов , включая программное обеспечение веб-сервера Apache, используемое большинством провайдеров облачного хостинга.
Эти файлы можно использовать для изменения конфигурации программного обеспечения веб-сервера Apache, чтобы включить или отключить дополнительные функции и возможности, которые может предложить программное обеспечение. Некоторые функции, которые вы можете включить или отключить с помощью файла .htaccess, включают сигнатуру сервера, кэширование файла, перенаправление URL , защиту паролем и пользовательские страницы ошибок.
Теоретически, вы можете найти этот конкретный файл в каждом каталоге на вашем сервере, однако в основном он находится в корневой веб- папке public_html или www. который содержит весь контент вашего сайта. Если у вас есть несколько подкаталогов веб-сайта ( www.example.com/subdirectory1/subdirectory2/ ), то файл .htaccess будет находиться в каталоге корневой папки ( public_html ), а также в каждом из подкаталогов ( subdirectory1, subdirectory2 ).
Чтобы получить доступ к файлу WordPress .htaccess по умолчанию , следуйте этим простым инструкциям.
Шаг 1: Войдите в свою учетную запись управляемого хостинга / общего хостинга, указав свое имя пользователя и пароль.
Шаг 2: Теперь, когда вы вошли в систему, перейдите в File Manager и щелкните по нему.
Шаг 3: Далее вы перейдете к файлам вашего сайта. Ищите тот, который говорит public.html . Ваш файл .htaccess в основном можно найти в этой папке.
Шаг 4: Нажмите на public.html, и вы увидите файл .htaccess, указанный внутри, как показано ниже.
Шаг 5: Вот и все! Теперь, когда вы нашли .htaccess, вы можете изменить его, щелкнув правой кнопкой мыши на файле .htaccess и нажав кнопку « Изменить» . Но имейте в виду, что это файл конфигурации, и возиться с ним следует под наблюдением экспертов (например, конструктор сайтов WordPress / разработчики WordPress ).
Почему файл называется .htaccess?
Эти файлы были впервые использованы для управления доступом пользователей для каждого каталога. Используя подмножество http.confдиректив настроек Apache , он позволил системному администратору ограничить доступ к отдельным каталогам для пользователей с именем и паролем, указанными в сопроводительном .htpasswdфайле.
Хотя .htaccessфайлы все еще используются для этого, они также используются для ряда других вещей, которые мы рассмотрим в этом руководстве.
Как создать файл .htaccess?
Если у вас нет файла .htaccess, вам необходимо его создать. Однако прежде чем приступить к созданию файла .htaccess, убедитесь, что он вам действительно нужен. То, что мы имеем в виду, это то, что файлы такого типа скрыты. Чтобы просмотреть их, вам необходимо убедиться, что вы включили «показывать скрытые файлы » в настройках вашего файлового менеджера.
Как только вы нажмете на настройку, откроется меню, в котором будет опция «показывать скрытые файлы». Убедитесь, что вы включили это.
Теперь посмотрим, сможете ли вы просмотреть файл .htaccess. Если вы все еще не видите в каталоге public.html своего сайта, вы можете приступить к его созданию, следуя простым инструкциям ниже.
Шаг 1. Создайте новый файл в текстовом редакторе и сохраните его как .htaccess. Убедитесь, что в конце нет .txt или любого другого расширения файла . Это должно читаться как просто .htaccess .
Шаг 2: Добавьте следующий основной код в пустой файл, чтобы начать.
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ – [L] RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L] </IfModule>
# END WordPress
Шаг 3: Сохраните изменения и загрузите файл в корневой каталог WordPress, используя FTP или файловый менеджер.
Шаг 3.1: Чтобы загрузить его в папку public_html через файловый менеджер, войдите в свою учетную запись хостинга WordPress . И зайдите в файловый менеджер. Там вы увидите вариант загрузки . Нажмите на это.
Шаг 3.2: Откроется новое окно, куда вы можете перетащить файл из локальной системы.
Шаг 3.3. После того, как вы выбрали файл, он будет загружен в ваш каталог.
Это все! Ваш файл .htaccess создан и готов к работе.
Что делает файл .htaccess?
Файл .htaccess, как мы уже упоминали, является файлом конфигурации и поэтому может использоваться для включения или отключения различных функций и функций выделенного сервера, таких как:
- Обработка ошибок
- Защита паролем
- IP черный список и белый список
- Блокировать пользователей по рефереру
- Указание файла по умолчанию для каталога
- Переадресация URL и перезапись URL
- Блокировать хотлинкинг
- Включить или отключить индекс
- Конфигурирование настроек PHP
Давайте разберемся, что представляет собой каждая из этих функций и для какой цели они служат.
Редактирование .htaccess из панели WordPress с помощью плагина
Альтернатива редактированию файла WordPress .htaccess – использование плагинов. Существует множество бесплатных плагинов, которые позволяют вам редактировать ваш файл .htaccess с панели управления WP. Один из самых популярных плагинов, который вы можете использовать, – Yoast SEO Plugin .
- После того, как вы установили и активировали этот плагин, вы увидите опцию SEO на левой панели вашей панели WordPress.
- Когда вы нажмете на нее, откроется новое окно. На верхней панели выберите Функции и Включить страницы расширенных настроек. Затем нажмите кнопку «Сохранить изменения».
- Затем из левой панели панели инструментов перейдите в раздел «Инструменты» в разделе «SEO», чтобы открыть редактор файлов, как показано ниже.
SEO → Инструменты → Редактор файлов
- Внесите изменения в файл .htaccess здесь и нажмите Сохранить изменения в .htaccess после редактирования.
Вы также можете использовать плагин WP Htaccess Editor для редактирования файла WordPress .htaccess.
(* Примечание. Не забудьте сделать резервную копию вашего файла WordPress .htaccess. Небольшая ошибка может привести к значительным изменениям на вашем сайте. Изменения, которые вы внесли, чтобы вы могли отменить при необходимости.)
Есть много вещей, которые вы можете сделать в файле htaccess, чтобы повысить скорость, производительность и безопасность WordPress. Давайте посмотрим поближе.
Проблемы с производительностью из-за файла .htaccess в WordPress
Каждый раз, когда кто-то посещает ваш сайт, веб-сервер загружает все конфигурации файла .htaccess. Он ищет все каталоги в домене. Это повлияет на производительность сайтов с большим трафиком . Некоторые другие общие проблемы, которые могут быть отсортированы через файл WordPress htaccess:
- предупреждения о длине содержимого публикации
- превышает максимальный размер загрузки
- 413 ошибка объекта запроса
- 500 – внутренняя ошибка сервера
Таким образом, файл .htaccess следует использовать, когда основная конфигурация сервера недоступна. Что еще можно сделать для повышения производительности вашего сайта? Давайте рассмотрим различные приемы повышения производительности с помощью файлов WordPress .htaccess:
Повышение производительности сайта WordPress с помощью файла .htaccess
Вы можете настроить свой сайт следующими способами, чтобы повысить его производительность с помощью файла WordPress .htaccess. Вам просто нужно скопировать и вставить указанные ниже коды в файл .htaccess для каждого подходящего варианта для вашего сайта.
Отключить AllowOverride
Вы можете запретить файлам .htaccess снижать производительность, включив AllowOverride только в необходимых каталогах. Как будто AllowOverride включен во всех каталогах, сервер проверит все. Поэтому отключите AllowOverride в корневом .htaccess файле сайта. Он должен быть включен только в необходимых каталогах через файл конфигурации сервера.
# повысить производительность, отключив AllowOverride
AllowOverride Нет
Передайте набор символов
Набор символов дает список символов, распознаваемых аппаратным / программным обеспечением. Таким образом, чтобы указать браузеру использовать определенный набор символов для отображения страницы, вам необходимо указать набор символов веб-страницы. Чтобы предоставить информацию о кодировке символов, напрямую влияет на взаимодействие веб-страницы между сервером и клиентом, отправку форм, соединения с базой данных и т. Д. Ваш браузер должен будет угадать, если вы не передадите набор символов, и он может отображать «мусорный» текст. Таким образом, вы можете передать набор символов по умолчанию, чтобы предотвратить отображение ошибок следующим образом:
# передать набор символов по умолчанию
AddDefaultCharset utf-8
Сохранить пропускную способность
Ваша пропускная способность должна быть в состоянии обслужить изменения макета, рост трафика, всплески трафика, и должна иметь место для роста. Чтобы подготовиться к будущему, вы можете добавить несколько директив для повышения производительности на серверах с поддержкой PHP следующим образом:
# сохранить пропускную способность для серверов с поддержкой PHP
<ifmodule mod_php4.c>
php_value zlib.output_compression 16386
</ ifmodule>
Установите часовой пояс сервера
Синхронизируйте ваш сервер в хронологическом порядке в соответствии с часовым поясом указанного состояния. Вы можете установить любой часовой пояс из поддерживаемых .
# установить часовой пояс сервера
SetEnv TZ America / Washington
Установите адрес электронной почты администратора
Укажите адрес электронной почты по умолчанию для администратора сервера.
# установить адрес электронной почты администратора сервера
SetEnv SERVER_ADMIN default@example.com
Включите кеширование браузера
Кэширование браузера позволит посетителям сохранять элементы с вашей веб-страницы. Тогда им не нужно загружать их снова. Он используется для разработки различных элементов, таких как таблицы стилей CSS и медиа-элементы. Это практичное решение, позволяющее посетителям загружать изображения, сохраненные на их компьютере, а не на вашем сервере. Это значительно уменьшит пропускную способность и увеличит время загрузки страницы.
Добавьте этот код для включения кэширования в браузере:
## EXPIRES CACHING ##
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image / jpg “доступ 1 год”
ExpiresByType image / jpeg “доступ 1 год”
ExpiresByType image / gif “доступ 1 год”
ExpiresByType image / png “доступ 1 год”
ExpiresByType text / css “доступ 1 год”
приложение ExpiresByType / pdf “доступ 1 месяц”
ExpiresByType text / x-javascript “доступ 1 месяц”
доступ ExpiresByType / x-shockwave-flash “доступ 1 месяц”
доступ ExpiresByType image / x-icon ” 1 год
доступа ” ExpiresDefault” 2 дня ”
</ IfModule>
Обработка ошибок
Когда вы нажимаете на страницу веб-сайта, за сценой происходит то, что к веб-серверу делается запрос. И если все пойдет хорошо, веб-сервер предоставит вам запрашиваемую страницу. Однако, если что-то пойдет не так, вы обычно получаете сообщение об ошибке . Это ваш .htaccess файл, который управляет этими сообщениями об ошибках.
Как вы, возможно, заметили, что не все сообщения об ошибках одинаковы, на самом деле каждое из них имеет свой код ошибки. Одним из примеров этого является ошибка 404, которую вы можете сгенерировать, если документ не может быть найден на сервере.
Если вы не указали в своем файле .htaccess способ обработки этих сообщений об ошибках, сервер просто сообщит об этом браузеру, который затем отобразит общее сообщение об ошибке.
Мы рекомендуем обрабатывать каждое сообщение об ошибке, создавая конкретное сообщение об ошибке для разных кодов ошибок. В наши дни веб-сайты делают еще один шаг и настраивают сообщение об ошибке, добавляя в него немного юмора или персонализации. Вот руководство, которое расскажет вам, как вы можете создавать эти пользовательские сообщения.
Однако, если вы просто хотите отобразить определенные пользовательские сообщения об ошибках для разных кодов ошибок, просто добавьте следующий код в ваш файл .htaccess .
# serve custom error pages
ErrorDocument 400 /errors/400.html
ErrorDocument 401 /errors/401.html
ErrorDocument 403 /errors/403.html
ErrorDocument 404 /errors/404.html
ErrorDocument 500 /errors/500.html
Использование .htaccessфайлов для указания документов об ошибках очень просто, одна из самых простых вещей, которые вы можете сделать с помощью этой функции.
Что такое код ошибки?
Когда запрос сделан на веб-сервер, он пытается ответить на этот запрос, обычно путем доставки документа (в случае страниц HTML) или путем доступа к приложению и возврата результатов (в случае систем управления контентом и другие веб-приложения).
Если что-то пойдет не так, генерируется ошибка. Различные типы ошибок имеют разные коды ошибок. Возможно, вы знакомы с 404ошибкой, которая возвращается, если документ не может быть найден на сервере.
Есть много других кодов ошибок, с которыми сервер может ответить.
Ошибки запроса клиента
- ошибка 400, неверный запрос
- 401 – Требуется авторизация
- 402 – Требуется оплата (пока не используется)
- 403 – запрещено
- 404 Не Найдено
- 405 – Метод не разрешен
- 406 – Недопустимо (кодировка)
- 407 – Требуется проверка подлинности прокси
- 408 – истекло время ожидания запроса
- 409 – конфликтующий запрос
- 410 – Ушел
- 411 – Требуется длина содержимого
- 412 – Сбой предварительного условия
- 413 – Запросить объект слишком долго
- 414 – слишком длинный запрос URI
- 415 – неподдерживаемый тип носителя.
Ошибки сервера
- 500 – внутренняя ошибка сервера
- 501 – не реализовано
- 502 Неверный шлюз
- сервис 503 недоступен
- Ошибка 504 Время ответа сервера истекло
- 505 – версия HTTP не поддерживается.
Защита паролем
Помимо помощи веб-серверу в генерировании сообщений об ошибках, файл .htaccess также может использоваться для ограничения доступа к определенным каталогам путем защиты их паролем. Этот процесс включает загрузку двух файлов .htaccess и .htpasswd в каталог, доступ к которому вы хотите ограничить. Включите следующие строки кода в ваш файл .htaccess:
AuthType Basic
AuthName “Password Protected Area”
AuthUserFile /path/to/.htpasswd
Require valid-user
Примечание. В приведенном выше коде измените выделенный путь ввода / на / .htpasswd на полный путь к файлу .htpasswd. Если вы не знаете полный путь, не волнуйтесь. Просто обратитесь к этому короткому руководству .
После того, как вы добавили этот код в ваш файл .htaccess, вам нужно загрузить файл .htpasswd, содержащий имя пользователя и пароль. Включите следующий текст строки в ваш файл .htpasswd.
username:encryptedpassword
Замените «имя пользователя» одним из ваших вариантов выбора и «зашифрованный пароль» реальным паролем в зашифрованном виде. Чтобы зашифровать пароль по вашему выбору, запустите его с помощью алгоритма и безопасно и надежно сохраните результат. Однако при входе в систему вы должны использовать оригинальный пароль, соответствующий имени пользователя, а не зашифрованный.
Это очень безопасный способ хранения паролей, потому что даже если кто-то получит несанкционированный доступ к вашему файлу .htpasswd, он не сможет увидеть ваш оригинальный пароль, только его зашифрованную версию. А поскольку шифрование является односторонним, вы не можете перефразировать оригинал из зашифрованного.
Интересно, где вы можете получить эти алгоритмы? Это два безопасных алгоритма, которые вы можете использовать: bcrypt, md5. Apache поддерживает и то и другое, но md5 – это та, которую используют текущие версии Apache.
Как создать имя пользователя и пароль в командной строке
Вы можете добавить больше пар имени пользователя и пароля, как показано в поле выше. Это можно сделать с помощью командной строки или терминала SSH.
Чтобы создать новый файл .htpasswd, используйте команду с -c (команда для создания), а затем путь к каталогу (один сервер).
> htpasswd -c /pathtodirectory/.htpasswdusername
Альтернативный метод
Однако, если вам неудобно возиться с командной строкой или терминалом SSH, есть альтернатива. Вы можете создать файл .htpasswd и заполнить его, используя простой текстовый редактор. Вы можете загрузить их на сайт через FTP или файловый менеджер. Вы можете сделать это так же, как мы загрузили файл .htaccess.
IP черный список и белый список
Файл .htaccess также можно использовать для блокировки пользователей или внесения в черный список IP-адресов, которым вы не хотите получать доступ к своему сайту. Помимо черного списка, вы также можете заблокировать все, кроме посетителей, с определенными утвержденными IP-адресами.
Чтобы заблокировать определенные IP-адреса, используйте команду ниже в вашем файле .htaccess.
order allow,deny
deny from 231.23.5.1
allow from all
Не забудьте добавить IP-адреса, которые нужно заблокировать, вместо тех, которые мы вводим.
Вышеуказанная командная строка позволяет использовать директиву по умолчанию. И тогда тем, кто упоминается против отрицания, будет отказано во въезде.
Чтобы внести в белый список определенные IP-адреса, вам нужно изменить порядок следования директивы, то есть вместо или order allow, deny, вам нужно будет добавить order deny, allow, как показано ниже. Это ограничит все IP-адреса, кроме тех, которые вы указали в противном случае.
order deny,allow
deny from all
allow from 111.22.3.4
Блокировать пользователей по рефереру
Другая важная особенность файла .htaccess заключается в том, что вы можете использовать его, чтобы заблокировать определенные сайты от ссылок на ваши изображения. Это использует много ресурсов вашего сервера и является прямым случаем нарушения авторских прав! Некоторые из этих сайтов могут быть враждебными, и эти ссылки могут оказаться вредными для вашего сайта! Поэтому рекомендуется, чтобы эти конкретные сайты или доменные имена были заблокированы от горячей ссылки на ваш сайт. Чтобы блокировать такие сайты от ссылок на ваш сайт, вы можете добавить директивы в ваш файл .htaccess, как показано ниже.
RewriteEngine on
RewriteCond % ^http://.*example.com [NC,OR]
RewriteCond % ^http://.*toexample.com [NC,OR]
RewriteCond % ^http://.*oneexample.com [NC]
RewriteRule .* – [F]
Вам нужно будет заменить example.com URL-адресом, который нужно заблокировать. Остальное должно остаться прежним.
Указание файла по умолчанию для каталога WordPress
При доступе к сайту без указания имени файла большинство веб-серверов предполагают, что запрос относится к каталогу. Таким образом, веб-сервер обычно обслуживает файл по умолчанию из корневого каталога, также называемый индексным файлом или index.html .
Однако, если вы не хотите, чтобы файл index.html использовался в качестве файла по умолчанию, а вместо этого хотите, чтобы он представлял собой файл другого типа, например index.shtml , index.xml или index.php файлы, то вы можете использовать .htaccess, чтобы установить страницу по умолчанию .
Просто включите следующую директиву в ваш файл .htaccess.
DirectoryIndex [filename here]
Замените имя файла на то, что вам нравится.
Это некоторые из многих функций и возможностей файла .htaccess. Это очень важный файл, и поэтому вы должны быть осторожны и защищать его от попадания в лапы хакеров. Один из способов обезопасить это – скрыть это.
Включение серверных включений (SSI)
Что такое серверная часть?
SSI, или Server Side Includes, – это легкий язык сценариев, используемый в основном для встраивания документов HTML в другие документы HTML.
Это упрощает повторное использование общих элементов, таких как верхние и нижние колонтитулы, боковые панели и меню. Вы можете думать об этом как о предшественнике современных систем шаблонов и управления контентом.
<!– include virtual=”header.shtml” –>
SSI также условные директивы ( if, elseи т.д.) и переменные, что делает его полным, если несколько сложно использовать, язык сценариев. (Как правило, любой проект, более сложный, чем несколько включений, заставляет разработчика выбирать более надежный язык, такой как PHP или Perl.)
Включение SSI
На некоторых серверах веб-хостинга по умолчанию включены включения на стороне сервера. Если нет, вы можете включить его с вашим .htaccessфайлом, например, так:
AddType text/html .shtml
AddHandler server-parsed .shtml
Options Indexes FollowSymLinks Includes
Это должно включить SSI для всех файлов с .shtmlрасширением.
SSI для .htmlфайлов
Если вы хотите включить синтаксический анализ SSI для .htmlфайлов, вы можете добавить директиву для этого:
AddHandler server-parsed .html
Преимущество этого заключается в том, что вы можете использовать SSI, не давая миру знать, что вы его используете. Кроме того, если вы измените реализацию в будущем, вы можете сохранить свои .htmlрасширения файлов.
Недостатком этого является то, что каждый .html файл будет проанализирован с помощью SSI. Если у вас есть много .htmlфайлов, которые на самом деле не нуждаются в разборе SSI, это может привести к большому количеству ненужных служебных данных сервера, замедляя время загрузки страницы и расходуя ресурсы ЦП.
SSI на вашей странице индекса
Если вы не хотите , чтобы разобрать все .htmlфайлы, но вы действительно хотите использовать SSI на индексе (дома) страницы, вам необходимо указать , что в вашем .htaccessфайле.
Это потому, что когда веб-сервер ищет индексную страницу каталога, он ищет index.html, если вы не укажете обратное.
Если вы не анализируете .htmlфайлы, вам нужно, чтобы ваша индексная страница была названа так, index.shtmlчтобы SSI работал, и ваш сервер не знает, чтобы искать это по умолчанию.
Чтобы включить это, просто добавьте:
DirectoryIndex index.shtml index.html
Это предупреждает веб-сервер, что этот index.shtmlфайл является основным индексным файлом для каталога. Второй параметр, index.htmlэто резервная копия, на случай, если index.shtmlне найден.
Надо ли скрывать файл .htaccess?
Как мы уже упоминали, это чрезвычайно важный файл, который содержит важную информацию, такую как местоположение вашего файла .htpasswd. Таким образом, простой, но эффективный способ защитить его – скрыть его от общественности. Как ты это делаешь? Просто добавьте следующий код в ваш файл .htaccess.
<Files .htaccess>
order allow,deny
deny from all
</Files>
Но возиться с файлом .htaccess может иметь катастрофические последствия для вашего сайта, и даже может привести к сбою сайта . Чтобы предотвратить это, вот несколько вещей, о которых следует помнить, работая с файлом .htaccess. Скопируйте файл htaccess в вашу локальную систему каждый раз, когда вы собираетесь над ним работать.
Это очень важный шаг, и вы должны расставить приоритеты над всеми остальными. Это очень важная мера безопасности, которая может избавить вас от многих проблем, если вы случайно удалите ее или измените ее. Вещи, чтобы иметь в виду.
Резервное копирование файла
Для этого перейдите в File Manager на вашем веб-хосте и нажмите на файл public_html в домашнем каталоге, чтобы увидеть все файлы в нем. После этого просто дважды щелкните файл .htaccess, чтобы загрузить его в локальную систему и надежно сохранить.
Помимо резервного копирования вашего файла .htaccess, нужно помнить еще одну вещь за раз. То есть каждый раз, когда вы вносите изменения, сначала проверяйте их, а затем вносите еще одно. Внесение нескольких изменений в файл без предварительной проверки приведет к путанице только в случае ошибки.Потому что тогда ты не узнаешь, что именно вызвало это.
Еще одна вещь, о которой вы должны быть осторожны, это то, что когда вы создаете имя файла .htaccess, оно должно начинаться с точки. И у него не должно быть никаких дополнительных расширений файлов, таких как .txt и тому подобных. Реализуйте эти вышеупомянутые рекомендации, и ваш файл .htaccess должен быть в порядке.
Примеры команд в файле .htaccess
Посетители сайта должны получить доступ к вашему сайту с использованием SSL-шифрованного соединения в целях безопасности. Поэтому для принудительного установления HTTPS-соединения на вашем веб-сайте эти правила добавляются в файл .htaccess вашего веб-сайта:
RewriteEngine Вкл.
RewriteCond% {HTTPS} off
RewriteRule ^ (. *) $ Https: //% {HTTP_HOST}% {REQUEST_URI} [L, R = 301]
Установить перенаправление сайта на www
RewriteCond %{REQUEST_URI} !^/(robots.txt|favicon.ico|sitemap.xml)$
RewriteCond %{HTTP_HOST} !^www.sdit.com$ [NC]
RewriteRule ^(.*)$ https://www.sdit.com/$1 [R=301,L]
Динамическое перенаправление на www
RewriteCond %{REQUEST_URI} !^/robots.txt$ [NC]
RewriteCond %{HTTP_HOST} !^www.[a-z-]+.[a-z]{2,6} [NC]
RewriteCond %{HTTP_HOST} ([a-z-]+.[a-z]{2,6})$ [NC]
RewriteRule ^/(.*)$ http://%1/$1 [R=301,L]
301 Редирект на новый адрес Url
Redirect 301 /old/file.html https://www.askapache.com/new/file/
301 перенаправление всего каталога или раздела
RedirectMatch 301 /blog(.*) https://www.askapache.com/$1
Защита файла php.cgi
<FilesMatch “^php5?.(ini|cgi)$”>
Order Deny,Allow
Deny from All
Allow from env=REDIRECT_STATUS
</FilesMatch>
Установить Cookie на основе запроса.
Этот код отправляет заголовок Set-Cookie для создания на клиенте файла cookie со значением соответствующего элемента во 2-х параграфах.
RewriteRule ^(.*)(de|es|fr|it|ja|ru|en)/$ – [co=lang:$2:.askapache.com:7200:/]
Установить Cookie с переменной env
Header set Set-Cookie “language=%{lang}e; path=/;” env=lang
Реализация схемы кэширования с помощью .htaccess
# year
<FilesMatch “.(ico|pdf|flv|jpg|jpeg|png|gif|swf|mp3|mp4)$”>
Header set Cache-Control “public”
Header set Expires “Thu, 15 Apr 2010 20:00:00 GMT”
Header unset Last-Modified
</FilesMatch>
#2 hours
<FilesMatch “.(html|htm|xml|txt|xsl)$”>
Header set Cache-Control “max-age=7200, must-revalidate”
</FilesMatch>
<FilesMatch “.(js|css)$”>
SetOutputFilter DEFLATE
Header set Expires “Thu, 15 Apr 2010 20:00:00 GMT”
</FilesMatch>
Защита паролём одного файла сайта
<Files login.php>
AuthName “Prompt”
AuthType Basic
AuthUserFile /web/askapache.com/.htpasswd
Require valid-user
</Files>
Защита паролём нескольких файлов сайта
<FilesMatch “^(private|phpinfo).*$”>
AuthName “Development”
AuthUserFile /.htpasswd
AuthType basic
Require valid-user
</FilesMatch>
Отправить пользовательские заголовки
Header set P3P “policyref=”https://www.askapache.com/w3c/p3p.xml””
Header set X-Pingback “https://www.askapache.com/xmlrpc.php”
Header set Content-Language “en-US”
Header set Vary “Accept-Encoding”
Блокировка на основе заголовка User-Agent
SetEnvIfNoCase ^User-Agent$ .*(craftbot|download|extract|stripper|sucker|ninja|clshttp|webspider|leacher|collector|grabber|webpictures) HTTP_SAFE_BADBOT
SetEnvIfNoCase ^User-Agent$ .*(libwww-perl|aesop_com_spiderman) HTTP_SAFE_BADBOT
Deny from env=HTTP_SAFE_BADBOT
Блокировка с помощью RewriteCond
RewriteCond %{HTTP_USER_AGENT} ^.*(craftbot|download|extract|stripper|sucker|ninja|clshttp|webspider|leacher|collector|grabber|webpictures).*$ [NC]
RewriteRule . – [F,L]
.htaccess для mod_php
SetEnv PHPRC /location/todir/containing/phpinifile
.htaccess для php as cgi
AddHandler php-cgi .php .htm
Action php-cgi /cgi-bin/php5.cgi
Оболочка для пользовательских php.ini
#!/bin/sh
export PHP_FCGI_CHILDREN=3
exec php5.cgi -c /abs/php5/php.ini
Добавить значения из заголовков HTTP
SetEnvIfNoCase ^If-Modified-Since$ “(.+)” HTTP_IF_MODIFIED_SINCE=$1
SetEnvIfNoCase ^If-None-Match$ “(.+)” HTTP_IF_NONE_MATCH=$1
SetEnvIfNoCase ^Cache-Control$ “(.+)” HTTP_CACHE_CONTROL=$1
SetEnvIfNoCase ^Connection$ “(.+)” HTTP_CONNECTION=$1
SetEnvIfNoCase ^Keep-Alive$ “(.+)” HTTP_KEEP_ALIVE=$1
SetEnvIfNoCase ^Authorization$ “(.+)” HTTP_AUTHORIZATION=$1
SetEnvIfNoCase ^Cookie$ “(.+)” HTTP_MY_COOKIE=$1
Stop hotlinking
Вот несколько примеров кода MOD_REWRITE по умолчанию.
## REWRITE DEFAULTS
RewriteEngine On
RewriteBase /
## REQUIRE SUBDOMAIN
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} !^subdomain.askapache.com$ [NC]
RewriteRule ^/(.*)$ http://subdomain.askapache.com/$1 [L,R=301]
## SEO REWRITES
RewriteRule ^(.*)/ve/(.*)$ $1/voluntary-employee/$2 [L,R=301]
RewriteRule ^(.*)/hsa/(.*)$ $1/health-saving-account/$2 [L,R=301]
## WORDPRESS
RewriteCond %{REQUEST_FILENAME} !-f # Existing File
RewriteCond %{REQUEST_FILENAME} !-d # Existing Directory
RewriteRule . /index.php [L]
## ALTERNATIVE ANTI-HOTLINKING
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(subdomain.)?askapache.com/.*$ [NC]
RewriteRule ^.*.(bmp|tif|gif|jpg|jpeg|jpe|png)$ – [F]
## REDIRECT HOTLINKERS
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(subdomain.)?askapache.com/.*$ [NC]
RewriteRule ^.*.(bmp|tif|gif|jpg|jpeg|jpe|png)$ http://google.com [R]
## DENY REQUEST BASED ON REQUEST METHOD
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|OPTIONS|HEAD)$ [NC]
RewriteRule ^.*$ – [F]
## REDIRECT UPLOADS
RewriteCond %{REQUEST_METHOD} ^(PUT|POST)$ [NC]
RewriteRule ^(.*)$ /cgi-bin/form-upload-processor.cgi?p=$1 [L,QSA]
## REQUIRE SSL EVEN WHEN MOD_SSL IS NOT LOADED
RewriteCond %{HTTPS} !=on [NC]
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
### ALTERNATATIVE TO USING ERRORDOCUMENT
# http://www.htaccesselite.com/d/htaccess-errordocument-examples-vt11.html
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ /error.php [L]
## SEO REDIRECTS
Redirect 301 /2006/oldfile.html http://subdomain.askapache.com/newfile.html
RedirectMatch 301 /o/(.*)$ http://subdomain.askapache.com/s/dl/$1
Примеры защиты ваших файлов и защиты паролем.
#
# Require (user|group|valid-user) (username|groupname)
#
## BASIC PASSWORD PROTECTION
AuthType basic
AuthName “prompt”
AuthUserFile /.htpasswd
AuthGroupFile /dev/null
Require valid-user
## ALLOW FROM IP OR VALID PASSWORD
Require valid-user
Allow from 192.168.1.23
Satisfy Any
## PROTECT FILES
<FilesMatch “.(htaccess|htpasswd|ini|phps|fla|psd|log|sh)$”>
Order Allow,Deny
Deny from all
</FilesMatch>
## PREVENT HOTLINKING
SetEnvIfNoCase Referer “^http://subdomain.askapache.com/” good
SetEnvIfNoCase Referer “^$” good
<FilesMatch “.(png|jpg|jpeg|gif|bmp|swf|flv)$”>
Order Deny,Allow
Deny from all
Allow from env=good
ErrorDocument 403 http://www.google.com/intl/en_ALL/images/logo.gif
ErrorDocument 403 /images/you_bad_hotlinker.gif
</FilesMatch>
## LIMIT UPLOAD FILE SIZE TO PROTECT AGAINST DOS ATTACK
#bytes, 0-2147483647(2GB)
LimitRequestBody 10240000
## MOST SECURE WAY TO REQUIRE SSL
# https://www.askapache.com/htaccess/apache-ssl-in-htaccess-examples/
SSLOptions +StrictRequire
SSLRequireSSL
SSLRequire %{HTTP_HOST} eq “askapache.com”
ErrorDocument 403 https://askapache.com
## COMBINED DEVELOPER HTACCESS CODE-USE THIS
<FilesMatch “.(flv|gif|jpg|jpeg|png|ico|js|css|pdf|swf|html|htm|txt)$”>
Header set Cache-Control “max-age=5”
</FilesMatch>
AuthType basic
AuthName “Ooops! Temporarily Under Construction…”
AuthUserFile /.htpasswd
AuthGroupFile /dev/null
Require valid-user # password prompt for everyone else
Order Deny,Allow
Deny from all
Allow from 192.168.64.5 # Your, the developers IP address
Allow from w3.org # css/xhtml check jigsaw.w3.org/css-validator/
Allow from googlebot.com # Allows google to crawl your pages
Satisfy Any # no password required if host/ip is Allowed
## DONT HAVE TO EMPTY CACHE OR RELOAD TO SEE CHANGES
ExpiresDefault A5 #If using mod_expires
<FilesMatch “.(flv|gif|jpg|jpeg|png|ico|js|css|pdf|swf|html|htm|txt)$”>
Header set Cache-Control “max-age=5”
</FilesMatch>
## ALLOW ACCESS WITH PASSWORD OR NO PASSWORD FOR SPECIFIC IP/HOSTS
AuthType basic
AuthName “Ooops! Temporarily Under Construction…”
AuthUserFile /.htpasswd
AuthGroupFile /dev/null
Require valid-user # password prompt for everyone else
Order Deny,Allow
Deny from all
Allow from 192.168.64.5 # Your, the developers IP address
Allow from w3.org # css/xhtml check jigsaw.w3.org/css-validator/
Allow from googlebot.com # Allows google to crawl your pages
Satisfy Any # no password required if host/ip is Allowed
Расширенные прмиеры Mod_Rewrites
Вот некоторые конкретные примеры htaccess, взятые в основном из моего плагина WordPress Password Protection, который обеспечивает гораздо больше, чем просто защита паролем, как вы увидите из следующих примеров mod_rewrite. Вот некоторые из применений mod_rewrite. Некоторые из этих фрагментов довольно экзотичны и не похожи ни на что из того, что вы видели раньше, также только для тех, кто их понимает.
Защита директории
Включите защиту DirectoryIndex, предотвращая списки каталогов и по умолчанию.
Options -Indexes
DirectoryIndex index.html index.php /index.php
Защита паролем wp-login.php
Требуется действительный пользователь / пароль для доступа к странице входа [401]
<Files wp-login.php>
Order Deny,Allow
Deny from All
Satisfy Any
AuthName “Protected By AskApache”
AuthUserFile /web/askapache.com/.htpasswda1
AuthType Basic
Require valid-user
</Files>
Защита паролем wp-admin
Требуется действительный пользователь / пароль для доступа к любому нестатическому (css, js, images) файлу в этом каталоге. [401]
Options -ExecCGI -Indexes +FollowSymLinks -Includes
DirectoryIndex index.php /index.php
Order Deny,Allow
Deny from All
Satisfy Any
AuthName “Protected By AskApache”
AuthUserFile /web/askapache.com/.htpasswda1
AuthType Basic
Require valid-user
<FilesMatch “.(ico|pdf|flv|jpg|jpeg|mp3|mpg|mp4|mov|wav|wmv|png|gif|swf|css|js)$”>
Allow from All
</FilesMatch>
<FilesMatch “(async-upload).php$”>
<IfModule mod_security.c>
SecFilterEngine Off
</IfModule>
Allow from All
</FilesMatch>
Защита wp-content
Запрещает любой прямой запрос на файлы, заканчивающиеся на .php с 403 Forbidden. Может нарушать плагины / темы [401] поэтому после установки проверьте корректность работы сайта.
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /wp-content/.*$ [NC]
RewriteCond %{REQUEST_FILENAME} !^.+flexible-upload-wp25js.php$
RewriteCond %{REQUEST_FILENAME} ^.+.(php|html|htm|txt)$
RewriteRule .? – [F,NS,L]
Защита wp-includes
Запрещает любой прямой запрос на файлы, оканчивающиеся на .php с 403 Forbidden. Может нарушать плагины / темы [403]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /wp-includes/.*$ [NC]
RewriteCond %{THE_REQUEST} !^[A-Z]{3,9} /wp-includes/js/.+/.+ HTTP/ [NC]
RewriteCond %{REQUEST_FILENAME} ^.+.php$
RewriteRule .? – [F,NS,L]
Общие Exploits
Заблокируйте общие запросы эксплойтов с помощью 403 Forbidden. Это может сильно помочь, может сломать некоторые плагины. [403]
RewriteCond %{REQUEST_URI} !^/(wp-login.php|wp-admin/|wp-content/plugins/|wp-includes/).* [NC]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} ///.* HTTP/ [NC,OR]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /.*?=?(http|ftp|ssl|https):/.* HTTP/ [NC,OR]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /.*??.* HTTP/ [NC,OR]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /.*.(asp|ini|dll).* HTTP/ [NC,OR]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /.*.(htpasswd|htaccess|aahtpasswd).* HTTP/ [NC]
RewriteRule .? – [F,NS,L]
Остановить Hotlinking (хотлинкинг)
Отклоняет любой запрос статических файлов (изображений, css и т. Д.), Если реферер не является локальным сайтом или пуст. [403]
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{REQUEST_URI} !^/(wp-login.php|wp-admin/|wp-content/plugins/|wp-includes/).* [NC]
RewriteCond %{HTTP_REFERER} !^https://www.askapache.com.*$ [NC]
RewriteRule .(ico|pdf|flv|jpg|jpeg|mp3|mpg|mp4|mov|wav|wmv|png|gif|swf|css|js)$ – [F,NS,L]
Безопасные методы запроса
Отклоняет любой запрос, не используя GET, PROPFIND, POST, OPTIONS, PUT, HEAD [ 403 ]
RewriteCond %{REQUEST_METHOD} !^(GET|HEAD|POST|PROPFIND|OPTIONS|PUT)$ [NC]
RewriteRule .? – [F,NS,L]
Запретить Прокси
Запрещает любой запрос POST с использованием прокси-сервера. Можно еще получить доступ к сайту, но не комментировать.
RewriteCond %{REQUEST_METHOD} =POST
RewriteCond %{HTTP:VIA}%{HTTP:FORWARDED}%{HTTP:USERAGENT_VIA}%{HTTP:X_FORWARDED_FOR}%{HTTP:PROXY_CONNECTION} !^$ [OR]
RewriteCond %{HTTP:XPROXY_CONNECTION}%{HTTP:HTTP_PC_REMOTE_ADDR}%{HTTP:HTTP_CLIENT_IP} !^$
RewriteCond %{REQUEST_URI} !^/(wp-login.php|wp-admin/|wp-content/plugins/|wp-includes/).* [NC]
RewriteRule .? – [F,NS,L]
Настоящий wp-comments-post.php
Запрещает любую попытку POST для несуществующего wp-comments-post.php
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /.*/wp-comments-post.php.* HTTP/ [NC]
RewriteRule .? – [F,NS,L]
HTTP ПРОТОКОЛ
Запрещает любой неправильно сформированный протокол HTTP в запросе, только 0.9, 1.0 и 1.1
RewriteCond %{THE_REQUEST} !^[A-Z]{3,9} .+ HTTP/(0.9|1.0|1.1) [NC]
RewriteRule .? – [F,NS,L]
УКАЗАТЬ символы
Отклоняет любой запрос на URL, содержащий символы, отличные от «a-zA-Z0-9. + / -? = &» – действительно помогает, но может сломать ваш сайт в зависимости от ваших ссылок.
RewriteCond %{REQUEST_URI} !^/(wp-login.php|wp-admin/|wp-content/plugins/|wp-includes/).* [NC]
RewriteCond %{THE_REQUEST} !^[A-Z]{3,9} [a-zA-Z0-9.+_/-?=&]+ HTTP/ [NC]
RewriteRule .? – [F,NS,L]
Плохая длина контента запроса
Запрещает любой запрос POST, у которого нет заголовка длины содержимого
RewriteCond %{REQUEST_METHOD} =POST
RewriteCond %{HTTP:Content-Length} ^$
RewriteCond %{REQUEST_URI} !^/(wp-admin/|wp-content/plugins/|wp-includes/).* [NC]
RewriteRule .? – [F,NS,L]
Плохой тип контента
Запрещает любой запрос POST с типом содержимого, отличным от application / x-www-form-urlencoded | multipart / form-data
RewriteCond %{REQUEST_METHOD} =POST
RewriteCond %{HTTP:Content-Type} !^(application/x-www-form-urlencoded|multipart/form-data.*(boundary.*)?)$ [NC]
RewriteCond %{REQUEST_URI} !^/(wp-login.php|wp-admin/|wp-content/plugins/|wp-includes/).* [NC]
RewriteRule .? – [F,NS,L]
Отсутствует HTTP_HOST
Запрещает запросы, которые не содержат заголовок HTTP HOST.
RewriteCond %{REQUEST_URI} !^/(wp-login.php|wp-admin/|wp-content/plugins/|wp-includes/).* [NC]
RewriteCond %{HTTP_HOST} ^$
RewriteRule .? – [F,NS,L]
Внедрение проверки графических файлов
Отрицает внедрение файла с расширением, используя поддельную графику
RewriteCond %{HTTP:Content-Disposition} .php [NC]
RewriteCond %{HTTP:Content-Type} image/.+ [NC]
RewriteRule .? – [F,NS,L]
Нет UserAgent, не POST
Запрещает запросы POST пустыми пользовательскими агентами. Может помешать небольшому количеству посетителей от размещения.
RewriteCond %{REQUEST_METHOD} =POST
RewriteCond %{HTTP_USER_AGENT} ^-?$
RewriteCond %{REQUEST_URI} !^/(wp-login.php|wp-admin/|wp-content/plugins/|wp-includes/).* [NC]
RewriteRule .? – [F,NS,L]
Нет реферала, нет комментариев
Запрещает любые попытки комментирования с пустым полем HTTP_REFERER, что свидетельствует о спаме. Может помешать некоторым посетителям при размещении данных.
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /.*/wp-comments-post.php.* HTTP/ [NC]
RewriteCond %{HTTP_REFERER} ^-?$
RewriteRule .? – [F,NS,L]
Трекбэк Спам
Опровергает очевидный спам.
RewriteCond %{REQUEST_METHOD} =POST
RewriteCond %{HTTP_USER_AGENT} ^.*(opera|mozilla|firefox|msie|safari).*$ [NC]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /.+/trackback/? HTTP/ [NC]
RewriteRule .? – [F,NS,L]
Сопоставить все URI, кроме тех, которые соответствуют существующим файлам, обработчику
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteRule . /script.php
Сопоставить любой запрос с обработчиком
В случае, когда все URI должны быть отправлены в одно и то же место (включая потенциально запросы на статическое содержимое), используемый метод зависит от типа обработчика. Для сценариев php используйте: Для других обработчиков, таких как сценарии php, используйте:
RewriteCond %{REQUEST_URI} !=/script.php
RewriteRule .* /script.php
А для CGI-скриптов:
ScriptAliasMatch .* /var/www/script.cgi
Вместо этого сопоставьте URI, соответствующие существующим файлам, обработчику
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d [OR]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f
RewriteCond %{REQUEST_URI} !=/script.php
RewriteRule .* /script.php
Если существующие файлы, которые вы хотите обработать с помощью своего скрипта, имеют общий набор расширений файлов, отличных от расширений хандера, вы можете обойти mod_rewrite и использовать вместо него mod_actions. Допустим, вы хотите, чтобы все .html и .tpl файлы обрабатывались вашим скриптом:
Action foo-action /script.php
AddHandler foo-action html tpl
Запретить доступ, если var = val содержит строку foo.
RewriteCond %{QUERY_STRING} foo
RewriteRule ^/url – [F]
Удаление строки запроса
RewriteRule ^/url /url?
Добавление к строке запроса
Keep the existing query string using the Query String Append flag, but add var=val to the end.
RewriteRule ^/url /url?var=val [QSA]
Перезапись некоторых строк запроса
Перепишите URL-адреса, например http://name_site.com/url1?var=val, на http://name_site.com/url2?var=val, но не переписывайте их, если отсутствует val.
RewriteCond %{QUERY_STRING} val
RewriteRule ^/url1 /url2
Изменение строки запроса
Измените любой отдельный экземпляр val в строке запроса на other_val при доступе к / path. Обратите внимание, что% 1 и% 2 являются обратными ссылками на совпадающую часть регулярного выражения в предыдущем RewriteCond.
RewriteCond %{QUERY_STRING} ^(.*)val(.*)$
RewriteRule /path /path?%1other_val%2
Дополнительно
Также важно, чтобы вы сделали резервную копию своего сайта, прежде чем вносить какие-либо изменения в ваш файл .htaccess, потому что даже малейшая ошибка может сделать ваш сайт неработоспособным. Для этого есть множество плагинов WordPress . Для большего количества таких обучающих программ WordPress , следите за обновлениями.
Чтобы сайт функционировал, необходим веб-сервер ー программное обеспечение (ПО), обеспечивающее доступ к данным протоколов http и https.
Самый распространенный из них ー Apache. Он настраивается через конфигурационные файлы в формате текста. К главному из них ー httpd.conf или apache.conf ー доступ есть не у всех пользователей сервиса, поэтому остальным предлагается .htaccess настройка.
Что такое .htaccess
.htaccess ー это файл веб-сервера, который позволяет управлять настройками сайта и работой сервера, не изменяя при этом конфигурационного файла.
В каком-то смысле он напоминает менеджера, который управляет работой в офисе, не обращаясь по каждому мелкому вопросу к начальнику.
Благодаря работе с .htaccess можно:
- настроить редирект;
- изменить страницы ошибок;
- сделать сайт безопаснее;
- увеличить скорость работы сайта;
- настроить php параметры.
Где находится файл .htaccess
.htaccess располагается в корневой папке. Однако найти его бывает не так-то просто: из-за того, что у него нет названия, а есть лишь расширение после точки, он может оказаться невидимым для обычного пользователя, а значит, тот не сможет его изменить.
В этом случае нужно зайти в менеджер файлов в папку public_html, внести изменения в .htaccess с помощью текстового редактора и сохранить. Если и там вам не удастся его найти — смело создавайте собственный.
Важно! В этом случае может выйти ошибка из-за того, что недорогие хостинги запрещают клиентам создавать и вносить изменения в .htaccess. Делается это с целью заставить вас приобрести более дорогостоящий тариф.
В некоторых системах управлением содержимым ー Content Management System (CMS) ー можно найти .htaccess в административной панели. Пример из Битрикса:
Как проверить, работает ли .htaccess
Все очень просто: достаточно в файл добавить любое слово, сохранить и загрузить измененный файл вместо исходного. Так как новый файл будет с ошибкой, то сайт должен перестать работать.
Если этого не произойдет, значит .htaccess не функционирует. В случае нормального функционирования выйдет ошибка 500 Internal Server Error.
Как создать
Создать .htaccess можно в любом текстовом редакторе, например «Блокнот» Microsoft или Notepad++.
Последний предпочтительнее, так как в «Блокноте» при сохранении файла в кодировке UTF-8 может присутствовать маркер последовательности байтов (ВОМ-сигнатуры) ー специальный символ, который вставляется в начало текстового файла. Это может повлечь за собой проблемы в раскодировке информации.
Для создания .htaccess открываем пустой файл в редакторе, нажимаем «Файл» -> «Сохранить как», а затем называем его .htaccess и ставим тип файла «Все файлы». Далее сохраняем и размещаем его в корневом каталоге сайта.
Прежде чем приступать к редактированию, проверьте, не выдает ли сервер ошибку 500.
Работа с файлом .htaccess
Далее .htaccess можно использовать для настройки редиректа, устранения ошибок на страницах, настройки безопасности сайта и оптимизации его работы, а также параметров php.
Правильный 301 редирект
Сперва прописываем:
RewriteEngine On
Это делается для того, чтобы редирект работал. Далее в зависимости от нужд:
- Перенаправление с одной страницы на другую (или сайт):
Redirect 301 /старая-страница.html http://сайт.рф/новая-страница.html
- Перенаправление с сайта с www на сайт без www:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.domain.com$ [NC]
RewriteRule ^(.*)$ http://domain.com/$1 [R=301,L]
Редирект пользователей с одного сайта на другой:
Redirect 301 / http://newsite.com/
- Перенаправление с одного раздела на другой:
RewriteRule ^blog/raznoe/(.*)$ http://site.ru/blog/$1 [R=permanent,L]
- Перенаправление при смене домена:
RewriteCond %{HTTP_HOST} ^www.oldsite.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^test.oldsite.com$ [NC]
RewriteRule ^(.*)$ http://newsite.com/$1 [R=301,L]
Правильное изменение страниц ошибок
Коды ошибок с 400 по 599 указывают на неправильную работу сервера, но рядовому пользователю они ни о чем не говорят. Увидев непонятный текст, он может решить, что сайт прекратил свою работу, и больше на него не вернуться.
Чтобы не терять посетителей, необходимо создать для этого отдельную страницу, которая вежливо сообщает человеку, что он попал не туда, и перенаправляет по нужному адресу:
После этого добавляем в .htaccess код по примеру:
ErrorDocument 404 http://yoursite.com/404.html
Настройки безопасности сайта
Код отличается в зависимости от того, что именно вы хотите сделать и как обезопасить ваш сайт.
При защите от скриптинговых атак
Скриптиновая атака ー это внедрение вредоносного кода в страницу сайта злоумышленником.
- для отслеживания символических ссылок (обманка, которая заставляет систему думать, что файл настоящий, хотя на самом деле это не так) включаем:
Options +FollowSymLinks
- для блокировки ссылок со <script>:
RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]
- для скриптов, пытающихся изменить переменные PHP Globals (дают доступ ко всей программе):
RewriteCond %{QUERY_STRING} GLOBALS(=|[|%[0-9A-Z]{0,2}) [OR]
- чтобы заблокировать скрипты, пытающиеся изменить переменную _REQUEST (переменная запросов):
RewriteCond %{QUERY_STRING} _REQUEST(=|[|%[0-9A-Z]{0,2})
- чтобы перенаправить все скриптовые инъекции на страницу с ошибкой 403 (запрещено):
RewriteRule ^(.*)$ index.php [F,L]
Для защиты от кражи картинок
Это делается для того, чтобы злоумышленники не использовали путь к картинке на вашем сайте на своих собственных страничках. Так они могут экономить свой трафик за счет вашего: содержание загружается с их сервера, в то время как изображение — с вашего.
Для этого нужно создать картинку с надписью, запрещающую кражу иллюстраций и прописать ее путь. Пример кода, который вставляем:
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www.)?yoursite.com/ [nc]
RewriteRule .*.(gif|jpg|png)$ http://yoursite.com/images/stop_stealing.gif[nc]
Заблокировать доступ к сайту
- для конкретного IP:
allow from all
deny from 164.186.15.116
deny from 124.153.34.144
- для всех IP, кроме желаемых:
ErrorDocument 403 http://www.yoursite.com
Order deny,allow
Deny from all
Allow from 164.186.15.116
Allow from 124.153.34.144
- чтобы запретить доступ к папке:
Options All -Indexes
- чтобы запретить доступ к файлу:
<files myfile.txt>
order allow,deny
deny from all
</files>
- чтобы запретить доступ к файлам определенного вида:
<Files ".(txt)$">
Order Deny,Allow
Deny from all
</Files>
- чтобы заблокировать расширения:
SetEnvIfNoCase user-Agent ^Zeus [NC]
<limit get="" post="" head="">
Order Allow,Deny
Allow from all
Deny from env=bad_bot
</limit>
Оптимизация работы сайта
Ускорение работы с сайта за счет сжатия информации
Используем один из трех кодов и проверяем, какой работает лучше:
1.
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/javascript text/css application/x-javascript
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0[678] no-gzip
BrowserMatch bMSIE !no-gzip !gzip-only-text/html
<ifmodule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_item_include file .js$
mod_gzip_item_include file .css$ </ifmodule>
</IfModule>
2.
FileETag MTime Size
<ifmodule mod_expires.c>
<filesmatch ".(jpg|jpeg|gif|png|ico|css|js)$">
ExpiresActive on
ExpiresDefault "access plus 1 month"
</filesmatch>
</ifmodule>
3.
<ifModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file .(html?|txt|css|js|php|pl)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule>
Улучшение кэширования
Увеличивает скорость загрузки просмотренных страниц и снижает нагрузку на сервер за счет того, что не загружает повторно уже просмотренные картинки, элементы дизайна и пр. Используем один из двух, кодов, который будет работать лучше:
1.
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType application/javascript "access plus 7 days"
ExpiresByType text/javascript "access plus 7 days"
ExpiresByType text/css "access plus 7 days"
ExpiresByType image/gif "access plus 7 days"
ExpiresByType image/jpeg "access plus 7 days"
ExpiresByType image/png "access plus 7 days"
</IfModule>
2.
FileETag MTime Size
<ifmodule mod_expires.c>
<filesmatch ".(jpg|gif|png|css|js)$">
ExpiresActive on
ExpiresDefault "access plus 1 month"
</filesmatch>
</ifmodule>
Настройка php параметров
PHP ー это язык программирования, на котором написаны интернет-странички. Обычно настройки выполняются через файл php.ini, однако на виртуальном хостинге доступа к нему обычно не бывает.
Поэтому можно использовать файл .htaccess, чтобы, например, увеличить лимит данных, загружаемых на сайт и время обработки скриптов. Делается это для улучшения производительности.
Для этого необходимо обратиться к выражениям php_value:
<ifModule mod_php.c>
php_value upload_max_filesize 125M
php_value post_max_size 20M
php_value max_execution_time 60
</ifModule>
При этом в upload_max_filesize указываем максимальный размер загружаемых файлов(в мегабайтах), в post_max_size — максимальный объем постинга, а в max_execution_time — время на обработку скриптов (в секундах).
Какое влияние оказывает htaccess файл на сайт
.htaccess ー один из важнейших инструментов, обеспечивающих полноценную работу сайта на виртуальном хостинге. Он позволяет вносить повышать скорость и производительность сайта, а также защищать его от внешних вторжений, не влияя при этом на работу сервера.
Пользуетесь .htaccess? Расскажите в комментариях, чем именно он вам помогает!
Спорим, о некоторых вы не подозревали. Мы собрали варианты применения .htaccess для улучшения работы сайта. Он часто используется оптимизаторами для корректной настройки 301 редиректов. Но этим возможности файла не ограничиваются. Тут и безопасность, и оптимизация, и параметры отображения — с помощью .htaccess вебмастер может сделать много полезного, чтобы сайт работал корректно.
Файл .htaccess (сокращение от «hypertext access») переопределяет настройки самого популярного типа веб-серверов Apache и его аналогов. Ниже — способы применения .htaccess для разных целей с примерами кода.
Зачем нужен .htaccess и где его искать
Файл нужен для более гибкой настройки сервера под задачи оптимизатора. Задавать правила в .htaccess не стоит, если у вас есть доступ к главному конфигурационному файлу сервера .httpd.conf или apache.conf (название зависит от настроек операционной системы). Изменения в нем вступают в силу быстрее, запросы не перегружают сервер. Однако очень часто такого доступа нет, например, в случае с виртуальным хостингом. Тогда приходится прописывать нужные настройки через .htaccess.
Возможности .htaccess для оптимизации сайта:
- Настройка редиректов для SEO.
- Обеспечение безопасности ресурса в целом и отдельных разделов.
- Настройка корректного отображения сайта.
- Оптимизация скорости загрузки.
Где искать и как редактировать
Если файл .htaccess находится в корневой папке, действие команд распространяется на весь сайт, но разместить его можно в любой каталог. Тогда директивы будут касаться только конкретного каталога и подкаталогов. Таким образом, на ресурсе может быть несколько файлов .htaccess. Приоритет имеют команды файла, расположенного в каталоге, а не в корне.
.htaccess — общепринятое и самое популярное название, но не обязательное (оно задается в файле httpd.conf). Несмотря на непривычное название, создавать и редактировать файл можно в любом текстовом редакторе.
Некоторые CMS дают возможность редактировать файл через административную панель. В Битриксе его легко можно найти в разделе Контент — Файлы и папки:
В WordPress редактировать .htaccess можно с помощью модулей плагинов Yoast SEO и All in One SEO Pack.
Если файл .htaccess отсутствует, создайте его в текстовом редакторе и разместите в корневой папке сайта или в нужном каталоге (потребуется доступ к хостингу или по ftp).
Синтаксис .htaccess
Синтаксис файла простой: каждая директива (команда) начинается с новой строки, после знака # можно добавлять комментарии, которые не будут учитываться сервером. Изменения на сайте вступают в силу сразу, перезагрузка сервера не требуется.
Правила задаются в том числе при помощи регулярных выражений. Для того, чтобы их прочитать, нужно понимать значение спецсимволов и переменных. Расшифруем самые часто используемые.
Основные спецсимволы:
- ^ — начало строки;
- $ — конец строки;
- . — любой символ;
- * — любое количество любых символов;
- ? — один определенный символ;
- [0-9] — последовательность символов, например, от 0 до 9;
- | — символ «или», выбирается или одна группа, или другая;
- () — иcпользуется для выбора групп символов.
Основные переменные:
- %{HTTP_USER_AGENT} — поле User-Agent, которое передает браузер пользователя;
- %{REMOTE_ADDR} — IP адрес пользователя;
- %{REQUEST_URI} — запрашиваемый URI;
- %{QUERY_STRING} — параметры запроса после знака ?.
Для тех, кто хочет основательно погрузиться в тему, — полная официальная документация по использованию .htaccess или хороший ресурс на русском. А мы пройдемся по основным возможностям файла для оптимизации вашего сайта.
Настраиваем редиректы для SEO
Как мы уже упоминали, это самый популярный способ использования .htaccess. Перед тем, как настраивать тот или иной вид переадресации, убедитесь, что это действительно необходимо. Например, редирект на страницы со слешем в некоторых CMS настроен по умолчанию. О настройках редиректа для SEO мы писали в блоге.
При настройке 301 редиректов помните о двух правилах:
- Избегайте нескольких последовательных перенаправлений — они увеличивают нагрузку на сервер и снижают скорость работы сайта.
- Располагайте редиректы от частных к глобальным. Например, сначала переадресация с одной страницы на другую, затем общий редирект на страницы со слешем. Это правило работает не в 100% случаев, поэтому с размещением директив нужно экспериментировать.
1. Настраиваем постраничные 301 редиректы
Это потребуется в следующих случаях:
- изменилась структура сайта и у страницы поменялся уровень вложенности;
- страница перестала существовать, но нужно сохранить ее входящий трафик (например, в случае отсутствия товара обычно делают переадресацию на товарную категорию);
- поменялся URL, что крайне нежелательно, но тоже встречается.
Просто удалить страницу — плохая идея, лучше не отдавать роботу ошибку 404, а перенаправить его на другой URL. В этом случае есть шанс не потерять позиции сайта в выдаче и целевой трафик. Настроить 301 редирект с одной страницы на другую можно при помощи директивы простого перенаправления:
Redirect 301 /page1/ https://mysite.com/page2/
/page1/
— адрес страницы от корня, без протокола и домена. Например,/catalog/ofisnaya-mebel/kompjuternye-stoly/
.https://mysite.com/page2/
— полный адрес страницы перенаправления, включая протокол и домен. Например,https://dom-mebeli.com/ofisnaya-mebel/stoly-v-ofis/
.
2. Избавляемся от дублей
Каждая страница сайта должна быть доступна только по одному адресу. Для этого должны быть настроены:
- редирект на страницы со слешем в конце URL или наоборот;
- главное зеркало — основной адрес сайта в поиске.
Сделать это можно при помощи модуля mod_rewrite
. В его составе используются специальные команды — директивы сложного перенаправления. Первой командой всегда идет включение преобразования URL:
RewriteEngine On
Переадресация на слеш или наоборот
Настроить ли переадресацию на страницы со слешем или без, в каждом случае нужно решать индивидуально. Если у сайта уже накоплена история в поиске, анализируйте, каких страниц в индексе больше. Для новых сайтов обычно настраивают редирект на слеш. Проверить, не настроена ли переадресация по умолчанию, просто: удалите/добавьте слеш в конце URL. Если страница перезагрузится с новым адресом — мы имеем дубли, требуется настройка. Если URL подменяется — все в порядке. Проверять лучше несколько уровней вложенности.
Код 301 редиректа на слеш:
RewriteCond %{REQUEST_URI} /+[^.]+$
RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]
Код 301 редиректа на страницы без слеша:
RewriteCond %{REQUEST_URI} !?
RewriteCond %{REQUEST_URI} !&
RewriteCond %{REQUEST_URI} !=
RewriteCond %{REQUEST_URI} !.
RewriteCond %{REQUEST_URI} ![^/]$
RewriteRule ^(.*)/$ /$1 [R=301,L]
3. Настраиваем главное зеркало
Для начала нужно определиться, какой адрес будет являться основным для поиска. SSL-сертификат давно уже мастхэв. Просто установите его и добавьте правило в .htaccess. Не забудьте также прописать его в robots.txt.
Редирект на HTTPS
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
Определять, с «www» или без будет главное зеркало, можно несколькими способами:
- добавить сайт в Яндекс.Вебмастер в двух вариантах, в консоли отобразится информация, какой URL поисковик считает главным зеркалом;
- проанализировать выдачу и посмотреть, каких страниц сайта больше в индексе;
- для нового ресурса не имеет значения, с «www» или без будет адрес, выбор за вами.
После того как выбор сделан, воспользуйтесь одним из двух вариантов кода.
Редирект с www на без www
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
Редирект с без www на www
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www..* [NC]
RewriteRule ^(.*) http://www.%{HTTP_HOST}/$1 [R=301]
4. Перенаправляем с одного домена на другой
Самая очевидная причина настройки этого редиректа — переадресовать роботов и пользователей на другой адрес при переезде сайта на новый домен. Также им пользуются оптимизаторы для манипуляций ссылочной массой, но дроп-домены и PBN — серые технологии продвижения, которые в рамках этого материала мы затрагивать не будем.
Воспользуйтесь одним из вариантов кода:
RewriteEngine On
RewriteRule ^(.*)$ http://www.mysite2.com/$1 [R=301,L]
или
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.mysite1.ru$ [NC]
RewriteRule ^(.*)$ http://www.mysite2.ru/$1 [R=301,L]
Не забудьте поменять в коде «mysite1» и «mysite2» на старый и новый домен соответственно.
Модуль SEO в системе Promopult: для тех, кто не хочет тонуть в рутине. Все инструменты для улучшения качества сайта и поискового продвижения, автоматизация процессов, чек-листы, подробные отчеты.
Обеспечиваем безопасность сайта
Файл .htaccess предоставляет большие возможности для защиты сайта от вредоносных скриптов, кражи контента, DOS-атак. Также можно защитить доступ к определенным файлам и разделам.
5. Запрещаем загрузку картинок с вашего сайта
Существуют технологии, при которых сторонние сайты используют контент, в том числе изображения, загружая его прямо с вашего хостинга путем хотлинков (прямых ссылок на файлы). Это не только обидно и нарушает авторские права, но и создает ненужную дополнительную нагрузку на ваш сервер.
Осадите воришек при помощи этого кода:
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https://(www.)?mysite.com/ [nc]
RewriteRule .*.(gif|jpg|png)$ https://mysite.com/img/goaway.gif[nc]
Заменяете «mysite.com» на адрес вашего сайта и создаете изображение с любым сообщением о том, что красть чужие картинки нехорошо, по адресу https://mysite.com/img/goaway.gif
. Это изображение и будет показано на стороннем ресурсе.
6. Запрещаем доступ
Целым группам нежелательных гостей с определенных IP-адресов, подсетей, а также вредоносным ботам можно запретить доступ на ваш ресурс при помощи следующих директив в .htaccess.
Для нежелательных User Agents (ботов)
SetEnvIfNoCase user-Agent ^FrontPage [NC,OR]
SetEnvIfNoCase user-Agent ^Java.* [NC,OR]
SetEnvIfNoCase user-Agent ^Microsoft.URL [NC,OR]
SetEnvIfNoCase user-Agent ^MSFrontPage [NC,OR]
SetEnvIfNoCase user-Agent ^Offline.Explorer [NC,OR]
SetEnvIfNoCase user-Agent ^[Ww]eb[Bb]andit [NC,OR]
SetEnvIfNoCase user-Agent ^Zeus [NC]
<limit get=”” post=”” head=””>
Order Allow,Deny
Allow from all
Deny from env=bad_bot
</limit>
Список юзер-агентов можно дополнять, сокращать или создать свой. Перечень хороших и плохих ботов можно посмотреть здесь.
Частный случай такого запрета — запрет для поисковых роботов. Если вас почему-то не устраивает правило в robots.txt, можно запретить доступ, например, роботу Google при помощи таких директив:
RewriteEngine on
RewriteCond %{USER_AGENT} Googlebot
RewriteRule .* - [F]
Для всех, кроме указанных IP
ErrorDocument 403 https://mysite.com
Order deny,allow
Deny from all
Allow from IP1
Allow from IP2 и т. д.
Не забываем заменить «https://mysite.com» на адрес вашего сайта и вписать IP-адреса вместо IP1, IP2 и т.д.
Для определенных IP-адресов
allow from all
deny from IP1
deny from IP2 и т. д.
Для подсети
allow from all
deny from 192.168.0.0/24
Вписываем маску сети в строку после «deny from».
Спамные IP-адреса можно вычислить в логах сервера или с помощью сервисов статистики. В административной панели WordPress отображаются IP-адреса комментаторов:
К определенному файлу
<files myfile.html>
order allow,deny
deny from all
</files>
Вписываем название файла вместо «myfile.html» в примере. Пользователю будет показана ошибка 403 — «доступ запрещен».
Не лишним будет ограничить доступ к самому файлу .htaccess из соображений безопасности, а также рекомендуем после настройки всех правил поставить на файл права доступа 444.
<Files .htaccess>
order allow,deny
deny from all
</Files>
Для сайтов на WordPress важно ограничить доступ к файлу wp-config.php, т.к. в нем содержится информация о базе данных:
<files wp-config.php>
order allow,deny
deny from all
</files>
Для пользователей, пришедших с определенного сайта
Вы можете заблокировать посетителей с нежелательных ресурсов (например, со взрослым или шокирующим контентом).
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_REFERER} bad-site.com [NC,OR]
RewriteCond %{HTTP_REFERER} bad-site.com [NC,OR]
RewriteRule .* - [F]
</ifModule>
7. Защищаем доступ к определенному файлу или папке
Для начала создайте файл .htpasswd, пропишите в нем логины и пароли в формате user:password и разместите в корне сайта. В целях безопасности пароли лучше зашифровать. Это можно сделать при помощи специальных сервисов генерации записей, например, такого. Следующим шагом добавьте директории или файлы в .htaccess:
Защита паролем файла
<files secure.php=””>
AuthType Basic
AuthName “”
AuthUserFile /pub/home/.htpasswd
Require valid-user
</files>
Защита паролем папки
resides
AuthType basic
AuthName “This directory is protected”
AuthUserFile /pub/home/.htpasswd
AuthGroupFile /dev/null
Require valid-user
Вместо «/pub/home/.htpasswd» укажите путь до файла .htpasswd от корня сервера. Рекомендуем проверить доступ после установки кода.
8. Запрещаем выполнение вредоносных скриптов
Следующая группа директив защищает сайт от так называемых «скриптовых инъекций» — инструмента хакерских атак:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|[|%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|[|%[0-9A-Z]{0,2})
RewriteRule ^(.*)$ index.php [F,L]
Все попытки причинить вред вашему ресурсу будут перенаправлены на страницу ошибки 403 «доступ запрещен».
9. Защищаем сайт от DOS-атак
Один из способов защиты — ограничить максимально допустимый размер запроса (ограничение отсутствует по умолчанию).
Для этого прописываем в .htaccess размер загружаемых файлов в байтах:
LimitRequestBody 10240000
В примере указан размер 10 Мбайт. Если вы хотите запретить загрузку файлов, пропишите число меньше 1 Мбайт (1048576 байт).
Также можно изучить возможности директив LimitRequestFields, LimitRequestFieldSize и LimitRequestLine в официальной документации.
Настраиваем отображение сайта
Посмотрим, что можно сделать с отображением всего ресурса или его разделов в браузерах пользователей при помощи .htaccess.
10. Заменяем индексный файл
Индексный файл — тот, что открывается по умолчанию при обращении к определенному каталогу. Обычно они называются: index.html, index.htm, index.php, index.phtml, index.shtml, default.htm, default.html.
Вот как это выглядит в структуре каталога:
Чтобы заменить этот файл на любой другой, размещаете в каталоге .htaccess и добавляете эту команду:
DirectoryIndex hello.html
Вместо «hello.html» вписывайте адрес желаемого файла.
Можно задать последовательность файлов, которые будут открываться в указанном порядке, если один из них будет недоступен:
DirectoryIndex hello.html hello.php hello.pl
11. Добавляем или убираем html в конце URL
Сохранять или убирать расширение файлов в URL — дело вкуса каждого оптимизатора. Достоверных исследований влияния расширений в адресах на ранжирование ресурса нет, но каждый вебмастер имеет свое мнение по этому поводу.
Чтобы добавить .html:
RewriteCond %{REQUEST_URI} (.*/[^/.]+)($|?)
RewriteRule .* %1.html [R=301,L]
RewriteRule ^(.*)/$ /$1.html [R=301,L]
Чтобы убрать .html:
RewriteBase /
RewriteRule (.*).html$ $1 [R=301,L]
Этими же директивами можно добавить/убрать расширение php.
12. Настраиваем кодировку
Чтобы избежать ошибок в отображении ресурса браузером, нужно сообщить ему, в какой кодировке создан сайт. Самые популярные:
- UTF-8 — универсальная
- Windows-1251 — кириллица
- Windows-1250 — для Центральной Европы
- Windows-1252 — для Западной Европы
- KOI8-R — кириллица (КОИ8-Р)
Чаще всего используют UTF-8 и Windows-1251.
Если кодировка не указана в метатеге каждой страницы, можно задать ее через .htaccess.
Пример директивы, которая задает для файла кодировку UTF-8:
AddDefaultCharset UTF-8
А такая команда означает, что все загружаемые на сервер файлы будут преобразованы в Windows-1251:
CharsetSourceEnc WINDOWS-1251
В примерах приведены разные кодировки, но в рамках одного сайта кодировки в этих директивах должны совпадать.
13. Создаем кастомные страницы ошибок
При помощи правил в .htaccess можно настроить отображение специально созданных страниц для самых популярных ошибок, например:
ErrorDocument 401 /error/401.php
ErrorDocument 403 /error/403.php
ErrorDocument 404 /error/404.php
ErrorDocument 500 /error/500.php
Перед тем, как прописывать директивы, создайте в корне сайта папку error и разместите туда соответствующие файлы для страниц ошибок.
Зачем это нужно? Например, чтобы не потерять пользователя на странице 404, а дать ему возможность перейти в другие разделы сайта:
Оптимизируем работу сайта
Скорость загрузки сайта — один из факторов ранжирования в поисковых системах. Увеличить ее можно в том числе с помощью директив в .htaccess.
14. Сжимаем компоненты сайта при помощи mod_gzip или mod_deflate
Сжатие файлов, с одной стороны, увеличивает скорость загрузки сайта, но с другой — больше нагружает сервер. В .htaccess можно включить сжатие при помощи двух модулей — mod_zip и mod_deflate. Они практически идентичны по качеству сжатия.
Синтаксис модуля Gzip более гибкий и он умеет работать с масками:
<ifModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file .(html?|txt|css|js|php|pl)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule>
В mod_deflate вы перечисляете типы файлов, которые нужно сжать:
<ifModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/css text/javascript application/javascript application/x-javascript
</ifModule>
15. Усиливаем кэширование
Этот комплекс команд поможет быстрой загрузке сайта для тех посетителей, которые уже на нем были. Браузер не будет заново скачивать картинки и скрипты с сервера, а использует данные из кэша.
FileETag MTime Size
<ifmodule mod_expires.c>
<filesmatch “.(jpg|gif|png|css|js)$”>
ExpiresActive on
ExpiresDefault “access plus 1 week”
</filesmatch>
</ifmodule>
В примере срок жизни кэша ограничен одной неделей («1 week»), вы можете указать свой срок в месяцах (month), годах (year), часах (hours) и т.д.
Другой вариант кода:
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType application/javascript "access plus 7 days"
ExpiresByType text/javascript "access plus 7 days"
ExpiresByType text/css "access plus 7 days"
ExpiresByType image/gif "access plus 7 days"
ExpiresByType image/jpeg "access plus 7 days"
ExpiresByType image/png "access plus 7 days"
</IfModule>
Для кэширования доступны следующие типы файлов:
- image/x-icon;
- image/jpeg;
- image/png;
- image/gif;
- application/x-shockwave-flash;
- text/css;
- text/javascript;
- application/javascript;
- application/x-javascript;
- text/html;
- application/xhtml+xml.
Еще несколько возможностей
16. Управляем настройками php
Этот комплекс настроек выполняют программисты, если нет доступа к файлу php.ini. Остановимся на выражениях php_value, которые отвечают за объем загружаемых на сайт данных и время обработки скриптов, т.к. это напрямую влияет на производительность.
<ifModule mod_php.c>
php_value upload_max_filesize 125M
php_value post_max_size 20M
php_value max_execution_time 60
</ifModule>
В строке «upload_max_filesize» указываете максимальный размер загружаемых файлов в мегабайтах, «post_max_size» означает максимальный объем постинга, «max_execution_time» указывает время в секундах на обработку скриптов.
17. Боремся со спам-комментариями на WordPress
Для того, чтобы перекрыть доступ спамерам к файлу wp-comments-post.php, добавьте эти директивы в .htaccess:
RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .wp-comments-post.php*
RewriteCond %{HTTP_REFERER} !.*mysite.com.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]
Вместо «mysite.com» впишите адрес вашего сайта.
18. Устанавливаем e-mail для администратора сервера
Этот код в .htaccess установит e-mail администратора по умолчанию. На него будут приходить уведомления, связанные с важными событиями на сервере.
ServerSignature EMail
SetEnv SERVER_ADMIN admin@mysite.com
19. Предупреждаем о недоступности сайта
В ситуации, когда сайт недоступен по техническим причинам, можно перенаправить пользователей на страницу с информацией о том, когда работа будет восстановлена. Лучше избегать таких перерывов, но в форс-мажорных обстоятельствах добавляйте следующие директивы в .htaccess:
RewriteEngine on
RewriteCond %{REQUEST_URI} !/info.html$
RewriteCond %{REMOTE_HOST} !^12.345.678.90
RewriteRule $ https://mysite.ru/info.html [R=302,L]
IP-адрес в примере (12.345.678.90) замените на свой, в последней строке укажите адрес страницы вашего ресурса с информацией о характере и сроках завершения работ.
Общие правила работы с .htaccess
- Всегда делайте резервную копию файла перед внесением изменений, чтобы оперативно «откатить» их.
- Вносите изменения пошагово, добавляйте по одному правилу и оценивайте, как оно сработало.
- Если размещаете несколько файлов .htaccess в разных каталогах, прописывайте в дочерних только новые директивы, которые актуальны для конкретного каталога, остальные унаследуются от родительского каталога или файла в корневой папке.
- Очищайте кэш браузера: Ctrl + F5, в Safari: Ctrl + R, в Mac OS: Cmd + R.
- Если возникает ошибка 500, проверьте синтаксис правила (нет ли опечатки). Можно воспользоваться сервисами проверки файла .htaccess онлайн, например таким. Если ошибок не найдено, значит в главном конфигурационном файле такой тип директивы запрещен, придется обратиться за консультацией к программисту и хостинг-провайдеру.
- В директивах .htaccess кириллические символы не допускаются. Если необходимо указать адрес кириллического домена (мойсайт.рф), воспользуйтесь любым whois-сервисом, чтобы узнать его написание по методу punycode. Например, адрес «сайт.рф» будет выглядеть как «xn--80aswg.xn--p1ai/$1».
- Слишком большое количество директив в .htaccess может снизить работоспособность сайта. Старайтесь использовать файл только в том случае, если другим путем задачу решить нельзя.
- Если нет времени подробно изучать особенности директив, воспользуйтесь генератором .htaccess.
Файл .htaccess — это файл конфигурации, который определяет, как веб-сервер отвечает на запросы. WordPress .htaccess файл может быть использован для повышения вашего сайта производительности, безопасности и удобства использования. Он поддерживается большинством популярных веб-серверов , включая программное обеспечение веб-сервера Apache, используемое большинством провайдеров облачного хостинга.
Содержание
1
Эти файлы можно использовать для изменения конфигурации программного обеспечения веб-сервера Apache, чтобы включить или отключить дополнительные функции и возможности, которые может предложить программное обеспечение. Некоторые функции, которые вы можете включить или отключить с помощью файла .htaccess, включают сигнатуру сервера, кэширование файла, перенаправление URL , защиту паролем и пользовательские страницы ошибок.
Где находится .htaccess?
Теоретически, вы можете найти этот конкретный файл в каждом каталоге на вашем сервере, однако в основном он находится в корневой веб- папке public_html или www. который содержит весь контент вашего сайта. Если у вас есть несколько подкаталогов веб-сайта ( www.example.com/subdirectory1/subdirectory2/ ), то файл .htaccess будет находиться в каталоге корневой папки ( public_html ), а также в каждом из подкаталогов ( subdirectory1, subdirectory2 ).
Чтобы получить доступ к файлу WordPress .htaccess по умолчанию , следуйте этим простым инструкциям.
Шаг 1: Войдите в свою учетную запись управляемого хостинга / общего хостинга, указав свое имя пользователя и пароль.
Шаг 2: Теперь, когда вы вошли в систему, перейдите в File Manager и щелкните по нему.
Шаг 3: Далее вы перейдете к файлам вашего сайта. Ищите тот, который говорит public.html . Ваш файл .htaccess в основном можно найти в этой папке.
Шаг 4: Нажмите на public.html, и вы увидите файл .htaccess, указанный внутри, как показано ниже.
Шаг 5: Вот и все! Теперь, когда вы нашли .htaccess, вы можете изменить его, щелкнув правой кнопкой мыши на файле .htaccess и нажав кнопку « Изменить» . Но имейте в виду, что это файл конфигурации, и возиться с ним следует под наблюдением экспертов (например, конструктор сайтов WordPress / разработчики WordPress ).
Почему файл называется .htaccess?
Эти файлы были впервые использованы для управления доступом пользователей для каждого каталога. Используя подмножество http.conf
директив настроек Apache , он позволил системному администратору ограничить доступ к отдельным каталогам для пользователей с именем и паролем, указанными в сопроводительном .htpasswd
файле.
Хотя .htaccess
файлы все еще используются для этого, они также используются для ряда других вещей, которые мы рассмотрим в этом руководстве.
Как создать файл .htaccess?
Если у вас нет файла .htaccess, вам необходимо его создать. Однако прежде чем приступить к созданию файла .htaccess, убедитесь, что он вам действительно нужен. То, что мы имеем в виду, это то, что файлы такого типа скрыты. Чтобы просмотреть их, вам необходимо убедиться, что вы включили «показывать скрытые файлы » в настройках вашего файлового менеджера.
Как только вы нажмете на настройку, откроется меню, в котором будет опция «показывать скрытые файлы». Убедитесь, что вы включили это.
Теперь посмотрим, сможете ли вы просмотреть файл .htaccess. Если вы все еще не видите в каталоге public.html своего сайта, вы можете приступить к его созданию, следуя простым инструкциям ниже.
Шаг 1. Создайте новый файл в текстовом редакторе и сохраните его как .htaccess. Убедитесь, что в конце нет .txt или любого другого расширения файла . Это должно читаться как просто .htaccess .
Шаг 2: Добавьте следующий основной код в пустой файл, чтобы начать.
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L] </IfModule>
# END WordPress
Шаг 3: Сохраните изменения и загрузите файл в корневой каталог WordPress, используя FTP или файловый менеджер.
Шаг 3.1: Чтобы загрузить его в папку public_html через файловый менеджер, войдите в свою учетную запись хостинга WordPress . И зайдите в файловый менеджер. Там вы увидите вариант загрузки . Нажмите на это.
Шаг 3.2: Откроется новое окно, куда вы можете перетащить файл из локальной системы.
Шаг 3.3. После того, как вы выбрали файл, он будет загружен в ваш каталог.
Это все! Ваш файл .htaccess создан и готов к работе.
Что делает файл .htaccess?
Файл .htaccess, как мы уже упоминали, является файлом конфигурации и поэтому может использоваться для включения или отключения различных функций и функций выделенного сервера, таких как:
- Обработка ошибок
- Защита паролем
- IP черный список и белый список
- Блокировать пользователей по рефереру
- Указание файла по умолчанию для каталога
- Переадресация URL и перезапись URL
- Блокировать хотлинкинг
- Включить или отключить индекс
- Конфигурирование настроек PHP
Давайте разберемся, что представляет собой каждая из этих функций и для какой цели они служат.
Редактирование .htaccess из панели WordPress с помощью плагина
Альтернатива редактированию файла WordPress .htaccess — использование плагинов. Существует множество бесплатных плагинов, которые позволяют вам редактировать ваш файл .htaccess с панели управления WP. Один из самых популярных плагинов, который вы можете использовать, — Yoast SEO Plugin .
- После того, как вы установили и активировали этот плагин, вы увидите опцию SEO на левой панели вашей панели WordPress.
- Когда вы нажмете на нее, откроется новое окно. На верхней панели выберите Функции и Включить страницы расширенных настроек. Затем нажмите кнопку «Сохранить изменения».
- Затем из левой панели панели инструментов перейдите в раздел «Инструменты» в разделе «SEO», чтобы открыть редактор файлов, как показано ниже.
SEO → Инструменты → Редактор файлов
- Внесите изменения в файл .htaccess здесь и нажмите Сохранить изменения в .htaccess после редактирования.
Вы также можете использовать плагин WP Htaccess Editor для редактирования файла WordPress .htaccess.
(* Примечание. Не забудьте сделать резервную копию вашего файла WordPress .htaccess. Небольшая ошибка может привести к значительным изменениям на вашем сайте. Изменения, которые вы внесли, чтобы вы могли отменить при необходимости.)
Есть много вещей, которые вы можете сделать в файле htaccess, чтобы повысить скорость, производительность и безопасность WordPress. Давайте посмотрим поближе.
Проблемы с производительностью из-за файла .htaccess в WordPress
Каждый раз, когда кто-то посещает ваш сайт, веб-сервер загружает все конфигурации файла .htaccess. Он ищет все каталоги в домене. Это повлияет на производительность сайтов с большим трафиком . Некоторые другие общие проблемы, которые могут быть отсортированы через файл WordPress htaccess:
- предупреждения о длине содержимого публикации
- превышает максимальный размер загрузки
- 413 ошибка объекта запроса
- 500 — внутренняя ошибка сервера
Таким образом, файл .htaccess следует использовать, когда основная конфигурация сервера недоступна. Что еще можно сделать для повышения производительности вашего сайта? Давайте рассмотрим различные приемы повышения производительности с помощью файлов WordPress .htaccess:
Повышение производительности сайта WordPress с помощью файла .htaccess
Вы можете настроить свой сайт следующими способами, чтобы повысить его производительность с помощью файла WordPress .htaccess. Вам просто нужно скопировать и вставить указанные ниже коды в файл .htaccess для каждого подходящего варианта для вашего сайта.
Отключить AllowOverride
Вы можете запретить файлам .htaccess снижать производительность, включив AllowOverride только в необходимых каталогах. Как будто AllowOverride включен во всех каталогах, сервер проверит все. Поэтому отключите AllowOverride в корневом .htaccess файле сайта. Он должен быть включен только в необходимых каталогах через файл конфигурации сервера.
# повысить производительность, отключив AllowOverride AllowOverride Нет |
Передайте набор символов
Набор символов дает список символов, распознаваемых аппаратным / программным обеспечением. Таким образом, чтобы указать браузеру использовать определенный набор символов для отображения страницы, вам необходимо указать набор символов веб-страницы. Чтобы предоставить информацию о кодировке символов, напрямую влияет на взаимодействие веб-страницы между сервером и клиентом, отправку форм, соединения с базой данных и т. Д. Ваш браузер должен будет угадать, если вы не передадите набор символов, и он может отображать «мусорный» текст. Таким образом, вы можете передать набор символов по умолчанию, чтобы предотвратить отображение ошибок следующим образом:
# передать набор символов по умолчанию AddDefaultCharset utf–8 |
Сохранить пропускную способность
Ваша пропускная способность должна быть в состоянии обслужить изменения макета, рост трафика, всплески трафика, и должна иметь место для роста. Чтобы подготовиться к будущему, вы можете добавить несколько директив для повышения производительности на серверах с поддержкой PHP следующим образом:
# сохранить пропускную способность для серверов с поддержкой PHP <ifmodule mod_php4.c> php_value zlib.output_compression 16386 </ ifmodule> |
Установите часовой пояс сервера
Синхронизируйте ваш сервер в хронологическом порядке в соответствии с часовым поясом указанного состояния. Вы можете установить любой часовой пояс из поддерживаемых .
# установить часовой пояс сервера SetEnv TZ America / Washington |
Установите адрес электронной почты администратора
Укажите адрес электронной почты по умолчанию для администратора сервера.
# установить адрес электронной почты администратора сервера SetEnv SERVER_ADMIN default@example.com |
Включите кеширование браузера
Кэширование браузера позволит посетителям сохранять элементы с вашей веб-страницы. Тогда им не нужно загружать их снова. Он используется для разработки различных элементов, таких как таблицы стилей CSS и медиа-элементы. Это практичное решение, позволяющее посетителям загружать изображения, сохраненные на их компьютере, а не на вашем сервере. Это значительно уменьшит пропускную способность и увеличит время загрузки страницы.
Добавьте этот код для включения кэширования в браузере:
## EXPIRES CACHING ## <IfModule mod_expires.c> ExpiresActive On ExpiresByType image / jpg “доступ 1 год” ExpiresByType image / jpeg “доступ 1 год” ExpiresByType image / gif “доступ 1 год” ExpiresByType image / png “доступ 1 год” ExpiresByType text / css “доступ 1 год” приложение ExpiresByType / pdf “доступ 1 месяц” ExpiresByType text / x–javascript “доступ 1 месяц” доступ ExpiresByType / x–shockwave–flash “доступ 1 месяц” доступ ExpiresByType image / x–icon ” 1 год доступа “ ExpiresDefault” 2 дня “ </ IfModule> |
Обработка ошибок
Когда вы нажимаете на страницу веб-сайта, за сценой происходит то, что к веб-серверу делается запрос. И если все пойдет хорошо, веб-сервер предоставит вам запрашиваемую страницу. Однако, если что-то пойдет не так, вы обычно получаете сообщение об ошибке . Это ваш .htaccess файл, который управляет этими сообщениями об ошибках.
Как вы, возможно, заметили, что не все сообщения об ошибках одинаковы, на самом деле каждое из них имеет свой код ошибки. Одним из примеров этого является ошибка 404, которую вы можете сгенерировать, если документ не может быть найден на сервере.
Если вы не указали в своем файле .htaccess способ обработки этих сообщений об ошибках, сервер просто сообщит об этом браузеру, который затем отобразит общее сообщение об ошибке.
Мы рекомендуем обрабатывать каждое сообщение об ошибке, создавая конкретное сообщение об ошибке для разных кодов ошибок. В наши дни веб-сайты делают еще один шаг и настраивают сообщение об ошибке, добавляя в него немного юмора или персонализации. Вот руководство, которое расскажет вам, как вы можете создавать эти пользовательские сообщения.
Однако, если вы просто хотите отобразить определенные пользовательские сообщения об ошибках для разных кодов ошибок, просто добавьте следующий код в ваш файл .htaccess .
# serve custom error pages
ErrorDocument 400 /errors/400.html
ErrorDocument 401 /errors/401.html
ErrorDocument 403 /errors/403.html
ErrorDocument 404 /errors/404.html
ErrorDocument 500 /errors/500.html
Использование .htaccess
файлов для указания документов об ошибках очень просто, одна из самых простых вещей, которые вы можете сделать с помощью этой функции.
Что такое код ошибки?
Когда запрос сделан на веб-сервер, он пытается ответить на этот запрос, обычно путем доставки документа (в случае страниц HTML) или путем доступа к приложению и возврата результатов (в случае систем управления контентом и другие веб-приложения).
Если что-то пойдет не так, генерируется ошибка. Различные типы ошибок имеют разные коды ошибок. Возможно, вы знакомы с 404
ошибкой, которая возвращается, если документ не может быть найден на сервере.
Есть много других кодов ошибок, с которыми сервер может ответить.
Ошибки запроса клиента
- ошибка 400, неверный запрос
- 401 — Требуется авторизация
- 402 — Требуется оплата (пока не используется)
- 403 — запрещено
- 404 Не Найдено
- 405 — Метод не разрешен
- 406 — Недопустимо (кодировка)
- 407 — Требуется проверка подлинности прокси
- 408 — истекло время ожидания запроса
- 409 — конфликтующий запрос
- 410 — Ушел
- 411 — Требуется длина содержимого
- 412 — Сбой предварительного условия
- 413 — Запросить объект слишком долго
- 414 — слишком длинный запрос URI
- 415 — неподдерживаемый тип носителя.
Ошибки сервера
- 500 — внутренняя ошибка сервера
- 501 — не реализовано
- 502 Неверный шлюз
- сервис 503 недоступен
- Ошибка 504 Время ответа сервера истекло
- 505 — версия HTTP не поддерживается.
Защита паролем
Помимо помощи веб-серверу в генерировании сообщений об ошибках, файл .htaccess также может использоваться для ограничения доступа к определенным каталогам путем защиты их паролем. Этот процесс включает загрузку двух файлов .htaccess и .htpasswd в каталог, доступ к которому вы хотите ограничить. Включите следующие строки кода в ваш файл .htaccess:
AuthType Basic
AuthName "Password Protected Area"
AuthUserFile /path/to/.htpasswd
Require valid-user
Примечание. В приведенном выше коде измените выделенный путь ввода / на / .htpasswd на полный путь к файлу .htpasswd. Если вы не знаете полный путь, не волнуйтесь. Просто обратитесь к этому короткому руководству .
После того, как вы добавили этот код в ваш файл .htaccess, вам нужно загрузить файл .htpasswd, содержащий имя пользователя и пароль. Включите следующий текст строки в ваш файл .htpasswd.
username:encryptedpassword
Замените «имя пользователя» одним из ваших вариантов выбора и «зашифрованный пароль» реальным паролем в зашифрованном виде. Чтобы зашифровать пароль по вашему выбору, запустите его с помощью алгоритма и безопасно и надежно сохраните результат. Однако при входе в систему вы должны использовать оригинальный пароль, соответствующий имени пользователя, а не зашифрованный.
Это очень безопасный способ хранения паролей, потому что даже если кто-то получит несанкционированный доступ к вашему файлу .htpasswd, он не сможет увидеть ваш оригинальный пароль, только его зашифрованную версию. А поскольку шифрование является односторонним, вы не можете перефразировать оригинал из зашифрованного.
Интересно, где вы можете получить эти алгоритмы? Это два безопасных алгоритма, которые вы можете использовать: bcrypt, md5. Apache поддерживает и то и другое, но md5 — это та, которую используют текущие версии Apache.
Как создать имя пользователя и пароль в командной строке
Вы можете добавить больше пар имени пользователя и пароля, как показано в поле выше. Это можно сделать с помощью командной строки или терминала SSH.
Чтобы создать новый файл .htpasswd, используйте команду с -c (команда для создания), а затем путь к каталогу (один сервер).
> htpasswd -c /pathtodirectory/.htpasswdusername
Альтернативный метод
Однако, если вам неудобно возиться с командной строкой или терминалом SSH, есть альтернатива. Вы можете создать файл .htpasswd и заполнить его, используя простой текстовый редактор. Вы можете загрузить их на сайт через FTP или файловый менеджер. Вы можете сделать это так же, как мы загрузили файл .htaccess.
IP черный список и белый список
Файл .htaccess также можно использовать для блокировки пользователей или внесения в черный список IP-адресов, которым вы не хотите получать доступ к своему сайту. Помимо черного списка, вы также можете заблокировать все, кроме посетителей, с определенными утвержденными IP-адресами.
Чтобы заблокировать определенные IP-адреса, используйте команду ниже в вашем файле .htaccess.
order allow,deny
deny from 231.23.5.1
allow from all
Не забудьте добавить IP-адреса, которые нужно заблокировать, вместо тех, которые мы вводим.
Вышеуказанная командная строка позволяет использовать директиву по умолчанию. И тогда тем, кто упоминается против отрицания, будет отказано во въезде.
Чтобы внести в белый список определенные IP-адреса, вам нужно изменить порядок следования директивы, то есть вместо или order allow, deny, вам нужно будет добавить order deny, allow, как показано ниже. Это ограничит все IP-адреса, кроме тех, которые вы указали в противном случае.
order deny,allow
deny from all
allow from 111.22.3.4
Блокировать пользователей по рефереру
Другая важная особенность файла .htaccess заключается в том, что вы можете использовать его, чтобы заблокировать определенные сайты от ссылок на ваши изображения. Это использует много ресурсов вашего сервера и является прямым случаем нарушения авторских прав! Некоторые из этих сайтов могут быть враждебными, и эти ссылки могут оказаться вредными для вашего сайта! Поэтому рекомендуется, чтобы эти конкретные сайты или доменные имена были заблокированы от горячей ссылки на ваш сайт. Чтобы блокировать такие сайты от ссылок на ваш сайт, вы можете добавить директивы в ваш файл .htaccess, как показано ниже.
RewriteEngine on
RewriteCond % ^http://.*example.com [NC,OR]
RewriteCond % ^http://.*toexample.com [NC,OR]
RewriteCond % ^http://.*oneexample.com [NC]
RewriteRule .* - [F]
Вам нужно будет заменить example.com URL-адресом, который нужно заблокировать. Остальное должно остаться прежним.
Указание файла по умолчанию для каталога WordPress
При доступе к сайту без указания имени файла большинство веб-серверов предполагают, что запрос относится к каталогу. Таким образом, веб-сервер обычно обслуживает файл по умолчанию из корневого каталога, также называемый индексным файлом или index.html .
Однако, если вы не хотите, чтобы файл index.html использовался в качестве файла по умолчанию, а вместо этого хотите, чтобы он представлял собой файл другого типа, например index.shtml , index.xml или index.php файлы, то вы можете использовать .htaccess, чтобы установить страницу по умолчанию .
Просто включите следующую директиву в ваш файл .htaccess.
DirectoryIndex [filename here]
Замените имя файла на то, что вам нравится.
Это некоторые из многих функций и возможностей файла .htaccess. Это очень важный файл, и поэтому вы должны быть осторожны и защищать его от попадания в лапы хакеров. Один из способов обезопасить это — скрыть это.
Включение серверных включений (SSI)
Что такое серверная часть?
SSI, или Server Side Includes, — это легкий язык сценариев, используемый в основном для встраивания документов HTML в другие документы HTML.
Это упрощает повторное использование общих элементов, таких как верхние и нижние колонтитулы, боковые панели и меню. Вы можете думать об этом как о предшественнике современных систем шаблонов и управления контентом.
<!— include virtual=“header.shtml” —> |
SSI также условные директивы ( if
, else
и т.д.) и переменные, что делает его полным, если несколько сложно использовать, язык сценариев. (Как правило, любой проект, более сложный, чем несколько включений, заставляет разработчика выбирать более надежный язык, такой как PHP или Perl.)
Включение SSI
На некоторых серверах веб-хостинга по умолчанию включены включения на стороне сервера. Если нет, вы можете включить его с вашим .htaccess
файлом, например, так:
AddType text/html .shtml AddHandler server–parsed .shtml Options Indexes FollowSymLinks Includes |
Это должно включить SSI для всех файлов с .shtml
расширением.
SSI для .html
файлов
Если вы хотите включить синтаксический анализ SSI для .html
файлов, вы можете добавить директиву для этого:
AddHandler server–parsed .html |
Преимущество этого заключается в том, что вы можете использовать SSI, не давая миру знать, что вы его используете. Кроме того, если вы измените реализацию в будущем, вы можете сохранить свои .html
расширения файлов.
Недостатком этого является то, что каждый .html
файл будет проанализирован с помощью SSI. Если у вас есть много .html
файлов, которые на самом деле не нуждаются в разборе SSI, это может привести к большому количеству ненужных служебных данных сервера, замедляя время загрузки страницы и расходуя ресурсы ЦП.
SSI на вашей странице индекса
Если вы не хотите , чтобы разобрать все .html
файлы, но вы действительно хотите использовать SSI на индексе (дома) страницы, вам необходимо указать , что в вашем .htaccess
файле.
Это потому, что когда веб-сервер ищет индексную страницу каталога, он ищет index.html
, если вы не укажете обратное.
Если вы не анализируете .html
файлы, вам нужно, чтобы ваша индексная страница была названа так, index.shtml
чтобы SSI работал, и ваш сервер не знает, чтобы искать это по умолчанию.
Чтобы включить это, просто добавьте:
DirectoryIndex index.shtml index.html |
Это предупреждает веб-сервер, что этот index.shtml
файл является основным индексным файлом для каталога. Второй параметр, index.html
это резервная копия, на случай, если index.shtml
не найден.
Надо ли скрывать файл .htaccess?
Как мы уже упоминали, это чрезвычайно важный файл, который содержит важную информацию, такую как местоположение вашего файла .htpasswd. Таким образом, простой, но эффективный способ защитить его — скрыть его от общественности. Как ты это делаешь? Просто добавьте следующий код в ваш файл .htaccess.
<Files .htaccess>
order allow,deny
deny from all
</Files>
Но возиться с файлом .htaccess может иметь катастрофические последствия для вашего сайта, и даже может привести к сбою сайта . Чтобы предотвратить это, вот несколько вещей, о которых следует помнить, работая с файлом .htaccess. Скопируйте файл htaccess в вашу локальную систему каждый раз, когда вы собираетесь над ним работать.
Это очень важный шаг, и вы должны расставить приоритеты над всеми остальными. Это очень важная мера безопасности, которая может избавить вас от многих проблем, если вы случайно удалите ее или измените ее. Вещи, чтобы иметь в виду.
Резервное копирование файла
Для этого перейдите в File Manager на вашем веб-хосте и нажмите на файл public_html в домашнем каталоге, чтобы увидеть все файлы в нем. После этого просто дважды щелкните файл .htaccess, чтобы загрузить его в локальную систему и надежно сохранить.
Помимо резервного копирования вашего файла .htaccess, нужно помнить еще одну вещь за раз. То есть каждый раз, когда вы вносите изменения, сначала проверяйте их, а затем вносите еще одно. Внесение нескольких изменений в файл без предварительной проверки приведет к путанице только в случае ошибки.Потому что тогда ты не узнаешь, что именно вызвало это.
Еще одна вещь, о которой вы должны быть осторожны, это то, что когда вы создаете имя файла .htaccess, оно должно начинаться с точки. И у него не должно быть никаких дополнительных расширений файлов, таких как .txt и тому подобных. Реализуйте эти вышеупомянутые рекомендации, и ваш файл .htaccess должен быть в порядке.
Примеры команд в файле .htaccess
Посетители сайта должны получить доступ к вашему сайту с использованием SSL-шифрованного соединения в целях безопасности. Поэтому для принудительного установления HTTPS-соединения на вашем веб-сайте эти правила добавляются в файл .htaccess вашего веб-сайта:
RewriteEngine Вкл. RewriteCond% {HTTPS} off RewriteRule ^ (. *) $ Https: //% {HTTP_HOST}% {REQUEST_URI} [L, R = 301] |
Установить перенаправление сайта на www
RewriteCond %{REQUEST_URI} !^/(robots.txt|favicon.ico|sitemap.xml)$ RewriteCond %{HTTP_HOST} !^www.sdit.com$ [NC] RewriteRule ^(.*)$ https://www.sdit.com/$1 [R=301,L] |
Динамическое перенаправление на www
RewriteCond %{REQUEST_URI} !^/robots.txt$ [NC] RewriteCond %{HTTP_HOST} !^www.[a–z–]+.[a–z]{2,6} [NC] RewriteCond %{HTTP_HOST} ([a–z–]+.[a–z]{2,6})$ [NC] RewriteRule ^/(.*)$ http://%1/$1 [R=301,L] |
301 Редирект на новый адрес Url
Redirect 301 /old/file.html https://www.askapache.com/new/file/ |
301 перенаправление всего каталога или раздела
RedirectMatch 301 /blog(.*) https://www.askapache.com/$1 |
Защита файла php.cgi
<FilesMatch “^php5?.(ini|cgi)$”> Order Deny,Allow Deny from All Allow from env=REDIRECT_STATUS </FilesMatch> |
Установить Cookie на основе запроса.
Этот код отправляет заголовок Set-Cookie для создания на клиенте файла cookie со значением соответствующего элемента во 2-х параграфах.
RewriteRule ^(.*)(de|es|fr|it|ja|ru|en)/$ – [co=lang:$2:.askapache.com:7200:/] |
Установить Cookie с переменной env
Header set Set–Cookie “language=%{lang}e; path=/;” env=lang |
Реализация схемы кэширования с помощью .htaccess
# year <FilesMatch “.(ico|pdf|flv|jpg|jpeg|png|gif|swf|mp3|mp4)$”> Header set Cache–Control “public” Header set Expires “Thu, 15 Apr 2010 20:00:00 GMT” Header unset Last–Modified </FilesMatch> #2 hours <FilesMatch “.(html|htm|xml|txt|xsl)$”> Header set Cache–Control “max-age=7200, must-revalidate” </FilesMatch> <FilesMatch “.(js|css)$”> SetOutputFilter DEFLATE Header set Expires “Thu, 15 Apr 2010 20:00:00 GMT” </FilesMatch> |
Защита паролём одного файла сайта
<Files login.php> AuthName “Prompt” AuthType Basic AuthUserFile /web/askapache.com/.htpasswd Require valid–user </Files> |
Защита паролём нескольких файлов сайта
<FilesMatch “^(private|phpinfo).*$”> AuthName “Development” AuthUserFile /.htpasswd AuthType basic Require valid–user </FilesMatch> |
Отправить пользовательские заголовки
Header set P3P “policyref=”https://www.askapache.com/w3c/p3p.xml”” Header set X–Pingback “https://www.askapache.com/xmlrpc.php” Header set Content–Language “en-US” Header set Vary “Accept-Encoding” |
Блокировка на основе заголовка User-Agent
SetEnvIfNoCase ^User–Agent$ .*(craftbot|download|extract|stripper|sucker|ninja|clshttp|webspider|leacher|collector|grabber|webpictures) HTTP_SAFE_BADBOT SetEnvIfNoCase ^User–Agent$ .*(libwww–perl|aesop_com_spiderman) HTTP_SAFE_BADBOT Deny from env=HTTP_SAFE_BADBOT |
Блокировка с помощью RewriteCond
RewriteCond %{HTTP_USER_AGENT} ^.*(craftbot|download|extract|stripper|sucker|ninja|clshttp|webspider|leacher|collector|grabber|webpictures).*$ [NC] RewriteRule . – [F,L] |
.htaccess для mod_php
SetEnv PHPRC /location/todir/containing/phpinifile |
.htaccess для php as cgi
AddHandler php–cgi .php .htm Action php–cgi /cgi–bin/php5.cgi |
Оболочка для пользовательских php.ini
#!/bin/sh export PHP_FCGI_CHILDREN=3 exec php5.cgi –c /abs/php5/php.ini |
Добавить значения из заголовков HTTP
SetEnvIfNoCase ^If–Modified–Since$ “(.+)” HTTP_IF_MODIFIED_SINCE=$1 SetEnvIfNoCase ^If–None–Match$ “(.+)” HTTP_IF_NONE_MATCH=$1 SetEnvIfNoCase ^Cache–Control$ “(.+)” HTTP_CACHE_CONTROL=$1 SetEnvIfNoCase ^Connection$ “(.+)” HTTP_CONNECTION=$1 SetEnvIfNoCase ^Keep–Alive$ “(.+)” HTTP_KEEP_ALIVE=$1 SetEnvIfNoCase ^Authorization$ “(.+)” HTTP_AUTHORIZATION=$1 SetEnvIfNoCase ^Cookie$ “(.+)” HTTP_MY_COOKIE=$1 |
Stop hotlinking
Вот несколько примеров кода MOD_REWRITE по умолчанию.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
## REWRITE DEFAULTS RewriteEngine On RewriteBase / ## REQUIRE SUBDOMAIN RewriteCond %{HTTP_HOST} !^$ RewriteCond %{HTTP_HOST} !^subdomain.askapache.com$ [NC] RewriteRule ^/(.*)$ http://subdomain.askapache.com/$1 [L,R=301] ## SEO REWRITES RewriteRule ^(.*)/ve/(.*)$ $1/voluntary–employee/$2 [L,R=301] RewriteRule ^(.*)/hsa/(.*)$ $1/health–saving–account/$2 [L,R=301] ## WORDPRESS RewriteCond %{REQUEST_FILENAME} !–f # Existing File RewriteCond %{REQUEST_FILENAME} !–d # Existing Directory RewriteRule . /index.php [L] ## ALTERNATIVE ANTI-HOTLINKING RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://(subdomain.)?askapache.com/.*$ [NC] RewriteRule ^.*.(bmp|tif|gif|jpg|jpeg|jpe|png)$ – [F] ## REDIRECT HOTLINKERS RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://(subdomain.)?askapache.com/.*$ [NC] RewriteRule ^.*.(bmp|tif|gif|jpg|jpeg|jpe|png)$ http://google.com [R] ## DENY REQUEST BASED ON REQUEST METHOD RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|OPTIONS|HEAD)$ [NC] RewriteRule ^.*$ – [F] ## REDIRECT UPLOADS RewriteCond %{REQUEST_METHOD} ^(PUT|POST)$ [NC] RewriteRule ^(.*)$ /cgi–bin/form–upload–processor.cgi?p=$1 [L,QSA] ## REQUIRE SSL EVEN WHEN MOD_SSL IS NOT LOADED RewriteCond %{HTTPS} !=on [NC] RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L] ### ALTERNATATIVE TO USING ERRORDOCUMENT # http://www.htaccesselite.com/d/htaccess-errordocument-examples-vt11.html RewriteCond %{REQUEST_FILENAME} !–f RewriteCond %{REQUEST_FILENAME} !–d RewriteRule ^.*$ /error.php [L] ## SEO REDIRECTS Redirect 301 /2006/oldfile.html http://subdomain.askapache.com/newfile.html RedirectMatch 301 /o/(.*)$ http://subdomain.askapache.com/s/dl/$1 |
Примеры защиты ваших файлов и защиты паролем.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
# # Require (user|group|valid-user) (username|groupname) # ## BASIC PASSWORD PROTECTION AuthType basic AuthName “prompt” AuthUserFile /.htpasswd AuthGroupFile /dev/null Require valid–user ## ALLOW FROM IP OR VALID PASSWORD Require valid–user Allow from 192.168.1.23 Satisfy Any ## PROTECT FILES <FilesMatch “.(htaccess|htpasswd|ini|phps|fla|psd|log|sh)$”> Order Allow,Deny Deny from all </FilesMatch> ## PREVENT HOTLINKING SetEnvIfNoCase Referer “^http://subdomain.askapache.com/” good SetEnvIfNoCase Referer “^$” good <FilesMatch “.(png|jpg|jpeg|gif|bmp|swf|flv)$”> Order Deny,Allow Deny from all Allow from env=good ErrorDocument 403 http://www.google.com/intl/en_ALL/images/logo.gif ErrorDocument 403 /images/you_bad_hotlinker.gif </FilesMatch> ## LIMIT UPLOAD FILE SIZE TO PROTECT AGAINST DOS ATTACK #bytes, 0-2147483647(2GB) LimitRequestBody 10240000 ## MOST SECURE WAY TO REQUIRE SSL # https://www.askapache.com/htaccess/apache-ssl-in-htaccess-examples/ SSLOptions +StrictRequire SSLRequireSSL SSLRequire %{HTTP_HOST} eq “askapache.com” ErrorDocument 403 https://askapache.com ## COMBINED DEVELOPER HTACCESS CODE-USE THIS <FilesMatch “.(flv|gif|jpg|jpeg|png|ico|js|css|pdf|swf|html|htm|txt)$”> Header set Cache–Control “max-age=5” </FilesMatch> AuthType basic AuthName “Ooops! Temporarily Under Construction…” AuthUserFile /.htpasswd AuthGroupFile /dev/null Require valid–user # password prompt for everyone else Order Deny,Allow Deny from all Allow from 192.168.64.5 # Your, the developers IP address Allow from w3.org # css/xhtml check jigsaw.w3.org/css-validator/ Allow from googlebot.com # Allows google to crawl your pages Satisfy Any # no password required if host/ip is Allowed ## DONT HAVE TO EMPTY CACHE OR RELOAD TO SEE CHANGES ExpiresDefault A5 #If using mod_expires <FilesMatch “.(flv|gif|jpg|jpeg|png|ico|js|css|pdf|swf|html|htm|txt)$”> Header set Cache–Control “max-age=5” </FilesMatch> ## ALLOW ACCESS WITH PASSWORD OR NO PASSWORD FOR SPECIFIC IP/HOSTS AuthType basic AuthName “Ooops! Temporarily Under Construction…” AuthUserFile /.htpasswd AuthGroupFile /dev/null Require valid–user # password prompt for everyone else Order Deny,Allow Deny from all Allow from 192.168.64.5 # Your, the developers IP address Allow from w3.org # css/xhtml check jigsaw.w3.org/css-validator/ Allow from googlebot.com # Allows google to crawl your pages Satisfy Any # no password required if host/ip is Allowed |
Расширенные прмиеры Mod_Rewrites
Вот некоторые конкретные примеры htaccess, взятые в основном из моего плагина WordPress Password Protection, который обеспечивает гораздо больше, чем просто защита паролем, как вы увидите из следующих примеров mod_rewrite. Вот некоторые из применений mod_rewrite. Некоторые из этих фрагментов довольно экзотичны и не похожи ни на что из того, что вы видели раньше, также только для тех, кто их понимает.
Защита директории
Включите защиту DirectoryIndex, предотвращая списки каталогов и по умолчанию.
Options –Indexes DirectoryIndex index.html index.php /index.php |
Защита паролем wp-login.php
Требуется действительный пользователь / пароль для доступа к странице входа [401]
<Files wp–login.php> Order Deny,Allow Deny from All Satisfy Any AuthName “Protected By AskApache” AuthUserFile /web/askapache.com/.htpasswda1 AuthType Basic Require valid–user </Files> |
Защита паролем wp-admin
Требуется действительный пользователь / пароль для доступа к любому нестатическому (css, js, images) файлу в этом каталоге. [401]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Options –ExecCGI –Indexes +FollowSymLinks –Includes DirectoryIndex index.php /index.php Order Deny,Allow Deny from All Satisfy Any AuthName “Protected By AskApache” AuthUserFile /web/askapache.com/.htpasswda1 AuthType Basic Require valid–user <FilesMatch “.(ico|pdf|flv|jpg|jpeg|mp3|mpg|mp4|mov|wav|wmv|png|gif|swf|css|js)$”> Allow from All </FilesMatch> <FilesMatch “(async-upload).php$”> <IfModule mod_security.c> SecFilterEngine Off </IfModule> Allow from All </FilesMatch> |
Защита wp-content
Запрещает любой прямой запрос на файлы, заканчивающиеся на .php с 403 Forbidden. Может нарушать плагины / темы [401] поэтому после установки проверьте корректность работы сайта.
RewriteCond %{THE_REQUEST} ^[A–Z]{3,9} /wp–content/.*$ [NC] RewriteCond %{REQUEST_FILENAME} !^.+flexible–upload–wp25js.php$ RewriteCond %{REQUEST_FILENAME} ^.+.(php|html|htm|txt)$ RewriteRule .? – [F,NS,L] |
Защита wp-includes
Запрещает любой прямой запрос на файлы, оканчивающиеся на .php с 403 Forbidden. Может нарушать плагины / темы [403]
RewriteCond %{THE_REQUEST} ^[A–Z]{3,9} /wp–includes/.*$ [NC] RewriteCond %{THE_REQUEST} !^[A–Z]{3,9} /wp–includes/js/.+/.+ HTTP/ [NC] RewriteCond %{REQUEST_FILENAME} ^.+.php$ RewriteRule .? – [F,NS,L] |
Общие Exploits
Заблокируйте общие запросы эксплойтов с помощью 403 Forbidden. Это может сильно помочь, может сломать некоторые плагины. [403]
RewriteCond %{REQUEST_URI} !^/(wp–login.php|wp–admin/|wp–content/plugins/|wp–includes/).* [NC] RewriteCond %{THE_REQUEST} ^[A–Z]{3,9} ///.* HTTP/ [NC,OR] RewriteCond %{THE_REQUEST} ^[A–Z]{3,9} /.*?=?(http|ftp|ssl|https):/.* HTTP/ [NC,OR] RewriteCond %{THE_REQUEST} ^[A–Z]{3,9} /.*??.* HTTP/ [NC,OR] RewriteCond %{THE_REQUEST} ^[A–Z]{3,9} /.*.(asp|ini|dll).* HTTP/ [NC,OR] RewriteCond %{THE_REQUEST} ^[A–Z]{3,9} /.*.(htpasswd|htaccess|aahtpasswd).* HTTP/ [NC] RewriteRule .? – [F,NS,L] |
Остановить Hotlinking (хотлинкинг)
Отклоняет любой запрос статических файлов (изображений, css и т. Д.), Если реферер не является локальным сайтом или пуст. [403]
RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{REQUEST_URI} !^/(wp–login.php|wp–admin/|wp–content/plugins/|wp–includes/).* [NC] RewriteCond %{HTTP_REFERER} !^https://www.askapache.com.*$ [NC] RewriteRule .(ico|pdf|flv|jpg|jpeg|mp3|mpg|mp4|mov|wav|wmv|png|gif|swf|css|js)$ – [F,NS,L] |
Безопасные методы запроса
Отклоняет любой запрос, не используя GET, PROPFIND, POST, OPTIONS, PUT, HEAD [ 403 ]
RewriteCond %{REQUEST_METHOD} !^(GET|HEAD|POST|PROPFIND|OPTIONS|PUT)$ [NC] RewriteRule .? – [F,NS,L] |
Запретить Прокси
Запрещает любой запрос POST с использованием прокси-сервера. Можно еще получить доступ к сайту, но не комментировать.
RewriteCond %{REQUEST_METHOD} =POST RewriteCond %{HTTP:VIA}%{HTTP:FORWARDED}%{HTTP:USERAGENT_VIA}%{HTTP:X_FORWARDED_FOR}%{HTTP:PROXY_CONNECTION} !^$ [OR] RewriteCond %{HTTP:XPROXY_CONNECTION}%{HTTP:HTTP_PC_REMOTE_ADDR}%{HTTP:HTTP_CLIENT_IP} !^$ RewriteCond %{REQUEST_URI} !^/(wp–login.php|wp–admin/|wp–content/plugins/|wp–includes/).* [NC] RewriteRule .? – [F,NS,L] |
Настоящий wp-comments-post.php
Запрещает любую попытку POST для несуществующего wp-comments-post.php
RewriteCond %{THE_REQUEST} ^[A–Z]{3,9} /.*/wp–comments–post.php.* HTTP/ [NC] RewriteRule .? – [F,NS,L] |
HTTP ПРОТОКОЛ
Запрещает любой неправильно сформированный протокол HTTP в запросе, только 0.9, 1.0 и 1.1
RewriteCond %{THE_REQUEST} !^[A–Z]{3,9} .+ HTTP/(0.9|1.0|1.1) [NC] RewriteRule .? – [F,NS,L] |
УКАЗАТЬ символы
Отклоняет любой запрос на URL, содержащий символы, отличные от «a-zA-Z0-9. + / -? = &» — действительно помогает, но может сломать ваш сайт в зависимости от ваших ссылок.
RewriteCond %{REQUEST_URI} !^/(wp–login.php|wp–admin/|wp–content/plugins/|wp–includes/).* [NC] RewriteCond %{THE_REQUEST} !^[A–Z]{3,9} [a–zA–Z0–9.+_/–?=&]+ HTTP/ [NC] RewriteRule .? – [F,NS,L] |
Плохая длина контента запроса
Запрещает любой запрос POST, у которого нет заголовка длины содержимого
RewriteCond %{REQUEST_METHOD} =POST RewriteCond %{HTTP:Content–Length} ^$ RewriteCond %{REQUEST_URI} !^/(wp–admin/|wp–content/plugins/|wp–includes/).* [NC] RewriteRule .? – [F,NS,L] |
Плохой тип контента
Запрещает любой запрос POST с типом содержимого, отличным от application / x-www-form-urlencoded | multipart / form-data
RewriteCond %{REQUEST_METHOD} =POST RewriteCond %{HTTP:Content–Type} !^(application/x–www–form–urlencoded|multipart/form–data.*(boundary.*)?)$ [NC] RewriteCond %{REQUEST_URI} !^/(wp–login.php|wp–admin/|wp–content/plugins/|wp–includes/).* [NC] RewriteRule .? – [F,NS,L] |
Отсутствует HTTP_HOST
Запрещает запросы, которые не содержат заголовок HTTP HOST.
RewriteCond %{REQUEST_URI} !^/(wp–login.php|wp–admin/|wp–content/plugins/|wp–includes/).* [NC] RewriteCond %{HTTP_HOST} ^$ RewriteRule .? – [F,NS,L] |
Внедрение проверки графических файлов
Отрицает внедрение файла с расширением, используя поддельную графику
RewriteCond %{HTTP:Content–Disposition} .php [NC] RewriteCond %{HTTP:Content–Type} image/.+ [NC] RewriteRule .? – [F,NS,L] |
Нет UserAgent, не POST
Запрещает запросы POST пустыми пользовательскими агентами. Может помешать небольшому количеству посетителей от размещения.
RewriteCond %{REQUEST_METHOD} =POST RewriteCond %{HTTP_USER_AGENT} ^–?$ RewriteCond %{REQUEST_URI} !^/(wp–login.php|wp–admin/|wp–content/plugins/|wp–includes/).* [NC] RewriteRule .? – [F,NS,L] |
Нет реферала, нет комментариев
Запрещает любые попытки комментирования с пустым полем HTTP_REFERER, что свидетельствует о спаме. Может помешать некоторым посетителям при размещении данных.
RewriteCond %{THE_REQUEST} ^[A–Z]{3,9} /.*/wp–comments–post.php.* HTTP/ [NC] RewriteCond %{HTTP_REFERER} ^–?$ RewriteRule .? – [F,NS,L] |
Трекбэк Спам
Опровергает очевидный спам.
RewriteCond %{REQUEST_METHOD} =POST RewriteCond %{HTTP_USER_AGENT} ^.*(opera|mozilla|firefox|msie|safari).*$ [NC] RewriteCond %{THE_REQUEST} ^[A–Z]{3,9} /.+/trackback/? HTTP/ [NC] RewriteRule .? – [F,NS,L] |
Сопоставить все URI, кроме тех, которые соответствуют существующим файлам, обработчику
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !–d RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !–f RewriteRule . /script.php |
Сопоставить любой запрос с обработчиком
В случае, когда все URI должны быть отправлены в одно и то же место (включая потенциально запросы на статическое содержимое), используемый метод зависит от типа обработчика. Для сценариев php используйте: Для других обработчиков, таких как сценарии php, используйте:
RewriteCond %{REQUEST_URI} !=/script.php RewriteRule .* /script.php |
А для CGI-скриптов:
ScriptAliasMatch .* /var/www/script.cgi |
Вместо этого сопоставьте URI, соответствующие существующим файлам, обработчику
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} –d [OR] RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} –f RewriteCond %{REQUEST_URI} !=/script.php RewriteRule .* /script.php |
Если существующие файлы, которые вы хотите обработать с помощью своего скрипта, имеют общий набор расширений файлов, отличных от расширений хандера, вы можете обойти mod_rewrite и использовать вместо него mod_actions. Допустим, вы хотите, чтобы все .html и .tpl файлы обрабатывались вашим скриптом:
Action foo–action /script.php AddHandler foo–action html tpl |
Запретить доступ, если var = val содержит строку foo.
RewriteCond %{QUERY_STRING} foo RewriteRule ^/url – [F] |
Удаление строки запроса
Добавление к строке запроса
Keep the existing query string using the Query String Append flag, but add var=val to the end.
RewriteRule ^/url /url?var=val [QSA] |
Перезапись некоторых строк запроса
Перепишите URL-адреса, например http://name_site.com/url1?var=val, на http://name_site.com/url2?var=val, но не переписывайте их, если отсутствует val.
RewriteCond %{QUERY_STRING} val RewriteRule ^/url1 /url2 |
Изменение строки запроса
Измените любой отдельный экземпляр val в строке запроса на other_val при доступе к / path. Обратите внимание, что% 1 и% 2 являются обратными ссылками на совпадающую часть регулярного выражения в предыдущем RewriteCond.
RewriteCond %{QUERY_STRING} ^(.*)val(.*)$ RewriteRule /path /path?%1other_val%2 |
Дополнительно
Также важно, чтобы вы сделали резервную копию своего сайта, прежде чем вносить какие-либо изменения в ваш файл .htaccess, потому что даже малейшая ошибка может сделать ваш сайт неработоспособным. Для этого есть множество плагинов WordPress . Для большего количества таких обучающих программ WordPress , следите за обновлениями.
Сен 15, 2017
Renat
2хв. читання
Введение
.htaccess — это скрытый файл используемый для хранения конфигурации вашего сайта. С помощью него вы можете переписывать URL адреса, создавать каталоги защищенные паролем, включать доступ к сайту только с определенных IP адресов, изменять часовой пояс вашего сайта или главную страницу и многое другое. В этом руководстве мы расскажем, как найти или создать файл .htaccess в WordPress с помощью Файлового Менеджера в панели управления вашего хостинга.
Что вам понадобится
Перед тем, как вы начнете это руководство, вам понадобится следующее:
- Доступ к панели управления вашего хостинга
Шаг 1 — Поиск и запуск Файлового Менеджера
Пройдите в панель управления вашего хостинга и нажмите иконку Файловый Менеджер в разделе Файлы:
Если вы используете cPanel, Диспетчер файлов может быть найден в разделе Файлы.
Шаг 2 — Поиск файла .htaccess в WordPress с помощью Файлового Менеджера
Файл .htaccess обычно находится в каталоге вашего WordPress в public_html. Вы можете легко получить доступ к файлу и его содержимому, кликнув по нему правой кнопкой мыши и выбрав Редактировать из выпадающего меню:
Если ваш хостинг использует платформу cPanel, процесс более или менее схож.
В случае если вы не можете найти файл .htaccess, поставьте галочку напротив Показать скрытые файлы в настройках Диспетчера файлов:
ВАЖНО! Данные действия применимы только для хостингов на базе cPanel. Другие хостинги могут не иметь данной функции.
Шаг 3 — Создание файла .htaccess
Если даже после изменения настроек файл .htaccess все еще не появился. Просто создайте новый файл, кликнув правой кнопкой мыши на пустом месте в Файловом Менеджере, далее выбрав Новый Файл или нажав соответствующую иконку.
После этого, введите название файла .htaccess и нажмите Создать. После этого вы сможете получить доступ к новому файлу и его содержимому
На хостингах на основе cPanel процесс практически такой же. Для создания нового файла, нажмите кнопку Файл внутри вашего Диспетчера Файлов:
Заключение
В данном руководстве вы узнали, как найти или создать файл .htaccess в WordPress с помощью Файлового Менеджера. Теперь вы можете настроить множество функций, таких как перенаправление, изменение индексных страниц, создание каталогов защищенных паролем и многое другое.