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

Содержание

htaccess для WordPress. Правильные настройки файла htaccess

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

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

Настройки файла htaccess для WordPress.

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

Вот так выглядит стандартный код htacces для wordpress.


# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^robots.txt$ - [L]
RewriteRule ^sitemap.xml$ - [L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress

Но я вам рекомендую его расширить. Смотрите предлагаемое.

htaccess для WordPress

Безопасность  WordPress и защита.

Закрыть доступ к просмотру всех файлов.

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


deny from all

Блокировка по IP.

Если вы хотите закрыть доступ пользователя к сайту, например, за нарушение правил и т. д., вы можете заблокировать пользователя по IP.
Для добавления нового IP по причине блокировки продублируйте строку deny.
xx.xxx.xxx.xxx - вместо этого вставляйте IP пользователя для блокировки
x2.xx2.xx2.xx2 - вместо этого вставляйте второй IP пользователя для блокировки, и так до бесконечности.


<Limit GET POST>
order allow,deny
deny from xx.xxx.xxx.xxx
deny from x2.xx2.xx2.xx2
allow from all
</Limit>

Защита изображения на сайте.

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


RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https://(www\.)?ваш-сайт.com/.*$ [NC]
RewriteRule\.(png|gif|jpg|jpeg)$ https://www.ваш-сайт.com/stopimg.gif [R,L]

Если кто-то решит установить картинку, хранящуюся у вас на сайте, то увидит вместо ожидаемого результата картинку с предупреждением  stopimg.gif

Защита от Спама.

Зачастую многие спам-боты обращаются напрямую к файлу, который обрабатывает комментарии пришедшие с сайта, этот файл называется wp-comments-post.php. Можно выловить спам-бота от живого пользователя через обращение к файлу wp-comments-post.php на наличие REFERER. При добавлении комментариев, у пользователя он есть, а вот у спам-бота его нет. Но этот метод не является 100% защитой от Спама,  воспользуйтесь дополнительно плагином.
Не забудьте поменять "ваш домен.ru" на ваш (5-тая строка ).


# защита комментария от Спам-бота
RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .wp-comments-post\.php*
RewriteCond %{HTTP_REFERER} !.*ваш домен.ru.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) ^https://%{REMOTE_ADDR}/$ [R=301,L]

Запретить доступ к папке wp-content и wp-includes.

Все пользователи  WordPress знают, что в папке "wp-content" хранятся все плагины и темы, картинки и многое др. Рекомендую защитить папку "wp-content" от нехороших людей (редисок).

Создать новый файл htaccess в папке "wp-content" на хостинге с таким кодом (эти же действия сделайте для папки "wp-includes"):


Order deny,allow
Deny from all
<Files ~ ".(xml|css|jpe?g|png|gif|js)$">
Allow from all
</Files>

Запрет доступа к файлу wp-config.php

В WordPress файл "wp-config.php"  содержит всю важную информацию, например, название и пароль к базе данных. Запретим доступ через файл htaccess.


# защита wp-config.php
<files wp-config.php>
order allow,deny
deny from all
</files>

Запрещаем доступ к определенному файлу.

Вы можете защитить файлы плагина css и js.


<Files ~ "\.(js|css)$">
order allow,deny
allow from all
</Files>

○ Запрещаем просмотр нежелательным User-Agent.

Вы можете запретить просмотр сайта некоторым программам, сканирующим сайтам, старые браузерам от которых вы полностью отказались.


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]
Order Allow,Deny
Allow from all
Deny from env=bad_bot

○ Ограничение доступа к админ-панеле WordPress.

Вы можете разрешить доступ к админ-панеле только вашему IP адресу. Но этот метод подходит, если у вас постоянный IP адрес.
xx.xxx.xxx.xxx - это ваш IP адрес.


AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName "Example Access Control"
AuthType Basic
<LIMIT GET>
order allow, deny
deny from all
allow from xx.xxx.xxx.xxx
</LIMIT>

○ Защита htaccess.

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


<Files ~ "^.*\.([Hh][Tt][Aa])">
order allow,deny
deny from all
satisfy all
</Files>

Редиректы (перенаправления).

Самый простой редирект на новый сайт и страницу.

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

перенаправление на страницу сайта.


Redirect 301 / https://ваш сайт.ru/страница.htm

перенаправление на новый адрес сайта.


Redirect 301 / https://ваш сайт.ru/

Внимание: "/" - слеш в конце обязательно.
Пример неправильной записи:
https://ваш сайт.ru
Пример правильной записи:
https://ваш сайт.ru/страница.htm
https://ваш сайт.ru/

Также можно перенаправить со страницы на страницу, при этом сохранит PR старой страницы.


Redirect 301 /путь/старая-страница.htm https://ваш сайт.ru/новая-страница.htm

○ 301 редирект для слияния страниц с www и без (склеить домен).

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

главным доменом будет с www


Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^ваш-домен\.ru$ [NC]
RewriteRule ^(.*)$ https://www.ваш-домен.ru/$1 [R=301,L]

главным доменом будет без www


Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.ваш-домен\.ru$ [NC]
RewriteRule ^(.*)$ https://ваш-домен.ru/$1 [R=301,L]

Изменяем страницы ошибок.

Рекомендую сделать личные страницы ошибок, где будет краткое разъяснение причины ошибки. В таком случае вы не потеряете клиентов при возникновении ошибки, так как пользователь будет перенаправлен на специальную подготовленую страницу.


ErrorDocument 401 /401.html
ErrorDocument 403 /403.html
ErrorDocument 404 /404.html
ErrorDocument 500 /500.html

401.html, 403.html, 404.html, 500.html - это подготовленые страницы ошибок.

Ускорение сайта через файл htaccess для WordPress.

Включаем кэширование браузера клиента.

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


Header append Cache-Control "public"
FileETag MTime Size
ExpiresActive On
ExpiresDefault "access plus 0 minutes"
ExpiresByType image/ico "access plus 1 years"
ExpiresByType text/css "access plus 1 years"
ExpiresByType text/javascript "access plus 1 years"
ExpiresByType image/gif "access plus 1 years"
ExpiresByType image/jpg "access plus 1 years"
ExpiresByType image/jpeg "access plus 1 years"
ExpiresByType image/bmp "access plus 1 years"
ExpiresByType image/png "access plus 1 years"

Важно: обратите внимание на image/, возможно в вашем случае папку с картинками нужно поменять.

Кодировка сайта.

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

Чтобы избежать проблемы с кодировкой, можно указать принудительную кодировку - UTF8


AddDefaultCharset UTF-8

Вот и все!!! Не игнорируйте темой "htaccess для WordPress", так как htaccess важен для защиты блога.

С Уважением Webmasterok2009

Понравился пост? Помоги другим узнать об этой статье, кликни на кнопку социальных сетей ↓↓↓


Последние новости категории:

Похожие статьи

Популярные статьи:

Оригинальный файл .htaccess для CMS Joomla

Исходный код

Содержимое стандартного файла .htaccess для CMS Joomla 2.5 – 3.

##
# @package Joomla
# @copyright Copyright (C) 2005 - 2012 Open Source Matters. All rights reserved.
# @license GNU General Public License version 2 or later; see LICENSE.txt
##

##
# READ THIS COMPLETELY IF YOU CHOOSE TO USE THIS FILE!
#
# The line just below this section: 'Options +FollowSymLinks' may cause problems
# with some server configurations. It is required for use of mod_rewrite, but may already
# be set by your server administrator in a way that dissallows changing it in
# your .htaccess file. If using it causes your server to error out, comment it out (add # to
# beginning of line), reload your site in your browser and test your sef url's. If they work,
# it has been set by your server administrator and you do not need it set here.
##

## Can be commented out if causes errors, see notes above.
Options +FollowSymLinks

## Mod_rewrite in use.

RewriteEngine On

## Begin - Rewrite rules to block out some common exploits.
# If you experience problems on your site block out the operations listed below
# This attempts to block the most common type of exploit `attempts` to Joomla!

#
# Block out any script trying to base64_encode data within the URL.
RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]
# Block out any script that includes a <script> tag in URL.
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
# Block out any script trying to set a PHP GLOBALS variable via URL.
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
# Block out any script trying to modify a _REQUEST variable via URL.
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
# Return 403 Forbidden header and show the content of the root homepage
RewriteRule .* index.php [F]
#
## End - Rewrite rules to block out some common exploits.

## Begin - Custom redirects
#
# If you need to redirect some pages, or set a canonical non-www to
# www redirect (or vice versa), place that code here. Ensure those
# redirects use the correct RewriteRule syntax and the [R=301,L] flags.
#
## End - Custom redirects

##
# Uncomment following line if your webserver's URL
# is not directly related to physical file paths.
# Update Your Joomla! Directory (just / for root).
##

# RewriteBase /

## Begin - Joomla! core SEF Section.
#
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
#
# If the requested path and file is not /index.php and the request
# has not already been internally rewritten to the index.php script
RewriteCond %{REQUEST_URI} !^/index\.php
# and the request is for something within the component folder,
# or for the site root, or for an extensionless URL, or the
# requested URL ends with one of the listed extensions
RewriteCond %{REQUEST_URI} /component/|(/[^.]*|\.(php|html?|feed|pdf|vcf|raw))$ [NC]
# and the requested path and file doesn't directly match a physical file
RewriteCond %{REQUEST_FILENAME} !-f
# and the requested path and file doesn't directly match a physical folder
RewriteCond %{REQUEST_FILENAME} !-d
# internally rewrite the request to the index.php script
RewriteRule .* index.php [L]
#
## End - Joomla! core SEF Section.

Содержимое стандартного файла .htaccess для CMS Joomla 1.5.

##
# @version $Id: htaccess.txt 21064 2011-04-03 22:12:19Z dextercowley $
# @package Joomla
# @copyright Copyright (C) 2005 - 2010 Open Source Matters. All rights reserved.
# @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
# Joomla! is Free Software
##

#####################################################
# READ THIS COMPLETELY IF YOU CHOOSE TO USE THIS FILE
#
# The line just below this section: 'Options +FollowSymLinks' may cause problems
# with some server configurations. It is required for use of mod_rewrite, but may already
# be set by your server administrator in a way that dissallows changing it in
# your .htaccess file. If using it causes your server to error out, comment it out (add # to
# beginning of line), reload your site in your browser and test your sef url's. If they work,
# it has been set by your server administrator and you do not need it set here.
#
#####################################################

## Can be commented out if causes errors, see notes above.
Options +FollowSymLinks

#
# mod_rewrite in use

RewriteEngine On

########## Begin - Rewrite rules to block out some common exploits
## If you experience problems on your site block out the operations listed below
## This attempts to block the most common type of exploit `attempts` to Joomla!
#
## Deny access to extension xml files (uncomment out to activate)
#<Files ~ "\.xml$">
#Order allow,deny
#Deny from all
#Satisfy all
#</Files>
## End of deny access to extension xml files
# Block out any script trying to set a mosConfig value through the URL
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR]
# Block out any script trying to base64_encode data within the URL
RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]
# Block out any script that includes a <script> tag in URL
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
# Block out any script trying to set a PHP GLOBALS variable via URL
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
# Block out any script trying to modify a _REQUEST variable via URL
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
# Return 403 Forbidden header and show the content of the root homepage
RewriteRule .* index.php [F]
#
########## End - Rewrite rules to block out some common exploits

########## Begin - Custom redirects
#
# If you need to redirect some pages, or set a canonical non-www to
# www redirect (or vice versa), place that code here. Ensure those
# redirects use the correct RewriteRule syntax and the [R=301,L] flags.
#
########## End - Custom redirects

# Uncomment following line if your webserver's URL
# is not directly related to physical file paths.
# Update Your Joomla! Directory (just / for root)

# RewriteBase /

########## Begin - Joomla! core SEF Section
#
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
#
# If the requested path and file is not /index.php and the request
# has not already been internally rewritten to the index.php script
RewriteCond %{REQUEST_URI} !^/index\.php
# and the request is for root, or for an extensionless URL, or the
# requested URL ends with one of the listed extensions
RewriteCond %{REQUEST_URI} (/[^.]*|\.(php|html?|feed|pdf|raw))$ [NC]
# and the requested path and file doesn't directly match a physical file
RewriteCond %{REQUEST_FILENAME} !-f
# and the requested path and file doesn't directly match a physical folder
RewriteCond %{REQUEST_FILENAME} !-d
# internally rewrite the request to the index.php script
RewriteRule .* index.php [L]
#
########## End - Joomla! core SEF Section

Файл .htaccess по-умолчанию для WordPress — Технический блог

26 августа 2018  /  WordPress

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

В повседневной жизни для своих блогов на хостинге я использую связку веб-сервера NGINX и интерпретатор PHP в режиме php-fpm. И со временем «зачистил» код сайта от всех ненужных на мой взгляд файлов, в том числе я удалил .htaccess.

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

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

Минимально необходимый для работы сайта на WordPress файл .htaccess должен содержать следующие строки:


# 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

Данный код был успешно протестирован на WordPress версии 4.9.8

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

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

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

Переадресация на HTTPS версию сайта

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


RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

Размещать эти строки следует в начале файла выше инструкций для WordPress.

Что еще может файл .htaccess

С другими примерами использования файла .htaccess вы можете ознакомиться в моих статьях:

Благодарности

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

  1. https://codex.wordpress.org/htaccess

Стандартный htaccess для OpenCart | IT notes

Не впервые сталкиваюсь с тем, что движок сам не генерирует файл .htaccess при включении ЧПУ(Seo-url).

В дистрибутиве этот файл также может отсутствовать.

По этой причине размещаю его у себя на сайте.

 

# 1.To use URL Alias you need to be running apache with mod_rewrite enabled.

# 2. In your opencart directory rename htaccess.txt to .htaccess.

# For any support issues please visit: http://www.opencart.com

Options +FollowSymlinks

# Prevent Directoy listing
Options -Indexes

# Prevent Direct Access to files
<FilesMatch «(?i)((\.tpl|\.ini|\.log|(?<!robots)\.txt))»>
Require all denied
## For apache 2.2 and older, replace «Require all denied» with these two lines :
# Order deny,allow
# Deny from all
</FilesMatch>

# SEO URL Settings
RewriteEngine On
# If your opencart installation does not run on the main web folder make sure you folder it does run in ie. / becomes /shop/

RewriteBase /
RewriteRule ^sitemap.xml$ index.php?route=extension/feed/google_sitemap [L]
RewriteRule ^googlebase.xml$ index.php?route=extension/feed/google_base [L]
RewriteRule ^system/download/(.*) index.php?route=error/not_found [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css)
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]

### Additional Settings that may need to be enabled for some servers
### Uncomment the commands by removing the # sign in front of it.
### If you get an «Internal Server Error 500» after enabling any of the following settings, restore the # as this means your host doesn’t allow that.

# 1. If your cart only allows you to add one item at a time, it is possible register_globals is on. This may work to disable it:
# php_flag register_globals off

# 2. If your cart has magic quotes enabled, This may work to disable it:
# php_flag magic_quotes_gpc Off

# 3. Set max upload file size. Most hosts will limit this and not allow it to be overridden but you can try
# php_value upload_max_filesize 999M

# 4. set max post size. uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields
# php_value post_max_size 999M

# 5. set max time script can take. uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields
# php_value max_execution_time 200

# 6. set max time for input to be recieved. Uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields
# php_value max_input_time 200

# 7. disable open_basedir limitations
# php_admin_value open_basedir none

Похожее

Правильный htaccess для WordPress



Доброго времени суток всем читателям моего блога! Недавно пытался сделать 301 редирект на своем автомобильном сайте, который попал под АГС, в связи с изменением всех ссылок на сайте и наткнулся на создание оптимального .htaccess файла для WordPress сайтов, который будет редиректить все технические страницы, что бы не плодить дубли страниц в поисковиках.

Выдержка из википедии, дабы не возникало ненужных вопросов:

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

Код стандартного файла htaccess для WordPress

И так, для начало приведу код стандартного файла .htaccess для WordPress:

# 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

# 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

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

Правильная настройка файла htaccess для WordPress

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

# BEGIN WordPress <IfModule mod_rewrite.c> Options +FollowSymLinks -Indexes RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteRule (.+)/feed /$1 [R=301,L] RewriteRule (.+)/attachment /$1 [R=301,L] RewriteRule (.+)/comment-page /$1 [R=301,L] RewriteRule (.+)/comments /$1 [R=301,L] RewriteRule (.+)/trackback /$1 [R=301,L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> <Files wp-config.php> # Запрещаем всем доступ к файлу wp-config.php order allow,deny deny from all </Files> <Files .htaccess> order allow,deny deny from all </Files> # END WordPress

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

# BEGIN WordPress

<IfModule mod_rewrite.c>

Options +FollowSymLinks -Indexes

RewriteEngine On

RewriteBase /

RewriteRule ^index\.php$ - [L]

RewriteRule (.+)/feed /$1 [R=301,L]

RewriteRule (.+)/attachment /$1 [R=301,L]

RewriteRule (.+)/comment-page /$1 [R=301,L]

RewriteRule (.+)/comments /$1 [R=301,L]

RewriteRule (.+)/trackback /$1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule . /index.php [L]

</IfModule>

<Files wp-config.php>

# Запрещаем всем доступ к файлу wp-config.php

order allow,deny

deny from all

</Files>

<Files .htaccess>

order allow,deny

deny from all

</Files>

 

# END WordPress

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

Эта часть кода отвечает за 301 редирект со страниц дублей, дабы не распылять вес и не создавать себе проблем в виде соплей в google:

RewriteRule (.+)/feed /$1 [R=301,L] RewriteRule (.+)/attachment /$1 [R=301,L] RewriteRule (.+)/comment-page /$1 [R=301,L] RewriteRule (.+)/comments /$1 [R=301,L] RewriteRule (.+)/trackback /$1 [R=301,L]

RewriteRule (.+)/feed /$1 [R=301,L]

RewriteRule (.+)/attachment /$1 [R=301,L]

RewriteRule (.+)/comment-page /$1 [R=301,L]

RewriteRule (.+)/comments /$1 [R=301,L]

RewriteRule (.+)/trackback /$1 [R=301,L]

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

Options +FollowSymLinks -Indexes

Options +FollowSymLinks -Indexes

Защита файла wp-config.php от несанкционированного доступа, что бы не утащили данные от нашей базы данных:

<Files wp-config.php> # Запрещаем всем доступ к файлу wp-config.php order allow,deny deny from all </Files>

<Files wp-config.php>

# Запрещаем всем доступ к файлу wp-config.php

order allow,deny

deny from all

</Files>

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

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

<Files .htaccess>

order allow,deny

deny from all

</Files>

Вот в общем и все, что я сегодня хотел рассказать и показать. Короче, мира, добра, любви, бобла, трафа и подписывайтесь на обновления блога!

Теги: пример правильного файла htaccess для вордпресс

Подпишитесь и получайте новые статьи мгновенно на электронную почту

Оригинальный файл .htaccess для CMS Drupal

Содержимое стандартного файла .htaccess для CMS Drupal 7.

#
# Apache/PHP/Drupal settings:
#

# Protect files and directories from prying eyes.
<FilesMatch "\.(engine|inc|info|install|make|module|profile|test|po|sh|.*sql|theme|tpl(\.php)?|xtmpl)$|^(\..*|Entries.*|Repository|Root|Tag|Template)$">
Order allow,deny
</FilesMatch>

# Don't show directory listings for URLs which map to a directory.
Options -Indexes

# Follow symbolic links in this directory.
Options +FollowSymLinks

# Make Drupal handle any 404 errors.
ErrorDocument 404 /index.php

# Set the default handler.
DirectoryIndex index.php index.html index.htm

# Override PHP settings that cannot be changed at runtime. See
# sites/default/default.settings.php and drupal_environment_initialize() in
# includes/bootstrap.inc for settings that can be changed at runtime.

# PHP 5, Apache 1 and 2.
<IfModule mod_php5.c>
php_flag magic_quotes_gpc off
php_flag magic_quotes_sybase off
php_flag register_globals off
php_flag session.auto_start off
php_value mbstring.http_input pass
php_value mbstring.http_output pass
php_flag mbstring.encoding_translation off
</IfModule>

# Requires mod_expires to be enabled.
<IfModule mod_expires.c>
# Enable expirations.
ExpiresActive On

# Cache all files for 2 weeks after access (A).
ExpiresDefault A1209600

<FilesMatch \.php$>
# Do not allow PHP scripts to be cached unless they explicitly send cache
# headers themselves. Otherwise all scripts would have to overwrite the
# headers set by mod_expires if they want another caching behavior. This may
# fail if an error occurs early in the bootstrap process, and it may cause
# problems if a non-Drupal PHP file is installed in a subdirectory.
ExpiresActive Off
</FilesMatch>
</IfModule>

# Various rewrite rules.
<IfModule mod_rewrite.c>
RewriteEngine on

# Block access to "hidden" directories whose names begin with a period. This
# includes directories used by version control systems such as Subversion or
# Git to store control files. Files whose names begin with a period, as well
# as the control files used by CVS, are protected by the FilesMatch directive
# above.
#
# NOTE: This only works when mod_rewrite is loaded. Without mod_rewrite, it is
# not possible to block access to entire directories from .htaccess, because
# <DirectoryMatch> is not allowed here.
#
# If you do not have mod_rewrite installed, you should remove these
# directories from your webroot or otherwise protect them from being
# downloaded.
RewriteRule "(^|/)\." - [F]

# If your site can be accessed both with and without the 'www.' prefix, you
# can use one of the following settings to redirect users to your preferred
# URL, either WITH or WITHOUT the 'www.' prefix. Choose ONLY one option:
#
# To redirect all users to access the site WITH the 'www.' prefix,
# (http://example.com/... will be redirected to http://www.example.com/...)
# uncomment the following:
# RewriteCond %{HTTP_HOST} !^www\. [NC]
# RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
#
# To redirect all users to access the site WITHOUT the 'www.' prefix,
# (http://www.example.com/... will be redirected to http://example.com/...)
# uncomment the following:
# RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
# RewriteRule ^ http://%1%{REQUEST_URI} [L,R=301]

# Modify the RewriteBase if you are using Drupal in a subdirectory or in a
# VirtualDocumentRoot and the rewrite rules are not working properly.
# For example if your site is at http://example.com/drupal uncomment and
# modify the following line:
# RewriteBase /drupal
#
# If your site is running in a VirtualDocumentRoot at http://example.com/,
# uncomment the following line:
# RewriteBase /

# Pass all requests not referring directly to files in the filesystem to
# index.php. Clean URLs are handled in drupal_environment_initialize().
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^ index.php [L]

# Rules to correctly serve gzip compressed CSS and JS files.
# Requires both mod_rewrite and mod_headers to be enabled.
<IfModule mod_headers.c>
# Serve gzip compressed CSS files if they exist and the client accepts gzip.
RewriteCond %{HTTP:Accept-encoding} gzip
RewriteCond %{REQUEST_FILENAME}\.gz -s
RewriteRule ^(.*)\.css $1\.css\.gz [QSA]

# Serve gzip compressed JS files if they exist and the client accepts gzip.
RewriteCond %{HTTP:Accept-encoding} gzip
RewriteCond %{REQUEST_FILENAME}\.gz -s
RewriteRule ^(.*)\.js $1\.js\.gz [QSA]

# Serve correct content types, and prevent mod_deflate double gzip.
RewriteRule \.css\.gz$ - [T=text/css,E=no-gzip:1]
RewriteRule \.js\.gz$ - [T=text/javascript,E=no-gzip:1]

<FilesMatch "(\.js\.gz|\.css\.gz)$">
# Serve correct encoding type.
Header set Content-Encoding gzip
# Force proxies to cache gzipped & non-gzipped css/js files separately.
Header append Vary Accept-Encoding
</FilesMatch>
</IfModule>
</IfModule>

Содержимое стандартного файла .htaccess для CMS Drupal 6.

#
# Apache/PHP/Drupal settings:
#

# Protect files and directories from prying eyes.
<FilesMatch "\.(engine|inc|info|install|make|module|profile|test|po|sh|.*sql|theme|tpl(\.php)?|xtmpl|svn-base)$|^(code-style\.pl|Entries.*|Repository|Root|Tag|Template|all-wcprops|entries|format)$">
Order allow,deny
</FilesMatch>

# Don't show directory listings for URLs which map to a directory.
Options -Indexes

# Follow symbolic links in this directory.
Options +FollowSymLinks

# Make Drupal handle any 404 errors.
ErrorDocument 404 /index.php

# Force simple error message for requests for non-existent favicon.ico.
<Files favicon.ico>
# There is no end quote below, for compatibility with Apache 1.3.
ErrorDocument 404 "The requested file favicon.ico was not found.
</Files>

# Set the default handler.
DirectoryIndex index.php

# Override PHP settings. More in sites/default/settings.php
# but the following cannot be changed at runtime.

# PHP 4, Apache 1.
<IfModule mod_php4.c>
php_value magic_quotes_gpc 0
php_value register_globals 0
php_value session.auto_start 0
php_value mbstring.http_input pass
php_value mbstring.http_output pass
php_value mbstring.encoding_translation 0
</IfModule>

# PHP 4, Apache 2.
<IfModule sapi_apache2.c>
php_value magic_quotes_gpc 0
php_value register_globals 0
php_value session.auto_start 0
php_value mbstring.http_input pass
php_value mbstring.http_output pass
php_value mbstring.encoding_translation 0
</IfModule>

# PHP 5, Apache 1 and 2.
<IfModule mod_php5.c>
php_value magic_quotes_gpc 0
php_value register_globals 0
php_value session.auto_start 0
php_value mbstring.http_input pass
php_value mbstring.http_output pass
php_value mbstring.encoding_translation 0
</IfModule>

# Requires mod_expires to be enabled.
<IfModule mod_expires.c>
# Enable expirations.
ExpiresActive On

# Cache all files for 2 weeks after access (A).
ExpiresDefault A1209600

<FilesMatch \.php$>
# Do not allow PHP scripts to be cached unless they explicitly send cache
# headers themselves. Otherwise all scripts would have to overwrite the
# headers set by mod_expires if they want another caching behavior. This may
# fail if an error occurs early in the bootstrap process, and it may cause
# problems if a non-Drupal PHP file is installed in a subdirectory.
ExpiresActive Off
</FilesMatch>
</IfModule>

# Various rewrite rules.
<IfModule mod_rewrite.c>
RewriteEngine on

# If your site can be accessed both with and without the 'www.' prefix, you
# can use one of the following settings to redirect users to your preferred
# URL, either WITH or WITHOUT the 'www.' prefix. Choose ONLY one option:
#
# To redirect all users to access the site WITH the 'www.' prefix,
# (http://example.com/... will be redirected to http://www.example.com/...)
# adapt and uncomment the following:
# RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
# RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
#
# To redirect all users to access the site WITHOUT the 'www.' prefix,
# (http://www.example.com/... will be redirected to http://example.com/...)
# uncomment and adapt the following:
# RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
# RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]

# Modify the RewriteBase if you are using Drupal in a subdirectory or in a
# VirtualDocumentRoot and the rewrite rules are not working properly.
# For example if your site is at http://example.com/drupal uncomment and
# modify the following line:
# RewriteBase /drupal
#
# If your site is running in a VirtualDocumentRoot at http://example.com/,
# uncomment the following line:
# RewriteBase /

# Rewrite URLs of the form 'x' to the form 'index.php?q=x'.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
</IfModule>

# $Id$

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

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