Htaccess options indexes


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

Что собой представляет файл htaccess

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

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


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

Как пользоваться директивами DirectoryIndex, Options и Options All Indexes

Опции Options Indexes и Options All Indexes необходимы для того, чтобы разрешить или запретить листинг каталогов сайтов. Приставка All означает, что эта опция будет действовать на все каталоги и папки. То есть настройка Options All не является гибкой для отдельных директорий, а сразу для всех, которые подчиняются данному файлу htaccess. Размещать файл htaccess с настройкой Options All следует в корне сайта, либо в одном из ключевых разделов, доступ к папкам которого вы хотите отключить.


Команды опции Options All определяются знаком перед словом Indexes. Если после Options All и сразу перед словом Indexes стоит минус, то все директивы нельзя будет просматривать. То есть только те директивы которые находятся внутри каталога с файлом htaccess, в котором прописано Options All -Indexes. Если же вы хотите, чтобы все директории можно было просматривать, тогда после Options All и сразу перед словом Indexes пропишите плюс «+». Только учтите, что такая настройка Options All превратит ваш сайт в пачку каталогов с открытым листингом файлов. С виду это будет напоминать FTP-сервер с открытой файловой системой. Но иногда вебмастерам необходимо так сделать, чтобы без лишних слов и оформления страницы предоставить пользователям доступ к определенным файлам.

Практичное применение функции Options для отдельных папок сводится к тому, чтобы лишить ваш сайт ошибки 403. Лучше для индексации, чтобы на странице появлялся листинг файлов, чем надпись о HTTP-ошибке. А возникает ошибка в результате того, что в каталоге не обнаружено индексного файла. Чтобы закрыть этот вопрос, вам следует прописать в htaccess опцию Options +Indexes. После того, как вы добавите файл дополнительных конфигураций с этой строчкой в одну из директорий сайта, в случае отсутствия в ней документа index, будет открываться листинг папки со списком файлов внутри.


Hide_php_extension

Учтите, что опция Options Indexes с плюсом или минусом не всегда будет действовать на все папки, находящиеся внутри каталога с htaccess. Для этого необходимо скорректировать некоторые настройки на сервере Apache. В частности, нужно поставить опцию AllowOverride All. Обычно, она установлена по умолчанию, но иногда вместо All бывает прописано None, что ограничивает действие Options Indexes только до текущей папки с файлом htaccess.

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

Когда вы запрашиваете определенный каталог, заходя на сайт через URL, вы не прописываете индексный файл, который следует открыть. По умолчанию, сначала открывается файл index формата php, потом html-формата и в последнюю очередь — index с разрешением htm. Как известно, если этих файлов в папке нет, то сайт перебрасывает вас на страницу с ошибкой 403. Если у вас активирована опция Options +Indexes, то вы увидите листинг каталога вместо ошибки. Но благодаря DirectoryIndex вы можете сделать так, чтобы пользователь попадал на другую страницу.


Внутри команды DirectoryIndex нужно лишь прописать файлы, которые сайт должен считать индексными для данного каталога. Если первым в DirectoryIndex вы пропишите файл index формата php, то он будет считаться приоритетнее всех последующих. Но нет смысла прописывать файл index формата php первым в DirectoryIndex, а после него указывать два последующих индексных документа, потому что эта настройка и без того активирована по умолчанию. А вот если в конце команды DirectoryIndex после файла php и всех остальных вы пропишите mainpage.html, то в случае отсутствия «индексов» откроется главная. Это лишь один из вариантов, как можно использовать опцию DirectoryIndex у себя на ресурсе. К сожалению, мало кто пользуется этой командой, потому у вас есть все шансы стать первооткрывателем возможностей данной опции.

Set-directory_index-and-404_error_message

В чем разнца между Options Indexes и IndexIgnore

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


Суть команды IndexIgnore в том, что она позволяет игнорировать наличие определенных файлов внутри папки, чтобы они не демонстрировались при листинге каталога. Например, если у вас есть какой-то файл с паролями passv.txt внутри папки. Если вы укажите Options +Index в htaccess внутри этой папки, то в случае отсутствия индексных файлов в листинге каталога появится файл, который не стоит показывать посторонним. А если вы пропишите в файле htaccess строку IndexIgnore passv.txt, то в листинге не окажется этого тайного файла — он будет скрыт для пользователей.

Если по какой-то причине вы хотите, чтобы листинг каталога был пустым, то в опции IndexIgnore не обязательно указывать перечисление всех файлов — можно прописать звездочку «*». Если же вам нужно запретить просмотр нескольких файлов, то укажите их через пробел в опции IndexIgnore.

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


Снимок-экрана-2014-10-16-в-19.36.46

Как убрать упоминание об index формата php и прочих «индексах» из URL

Убрать из ссылок индекс php, html, htm и прочие — это разумное решение. Особенно важно избавиться от упоминания индексного файла формата php в том случае, если он появляется при попадании на главную страницу. Убрать этот файл php из URL даже необходимо, потому что он вредит индексации. При этом вам не нужно будет удалять сам файл расширения php, потому как стоит убрать один файл, как в URL появится другой «индекс», к примеру index.html.

Чтобы закрыть показ в ссылках индекса php, вам нужно прописать это в файле htaccess. Убрать такое зеркало главной можно при помощи опции Rewrite, которая необходима для переадресации. Для этого вам нужно будет прописать две строки. Первая строка — RewriteEngine On, активирует запуск переадресации, а вторая нужна будет для указания правила. В этом правиле нужно будет указать индекс php формата, чтобы навсегда убрать его из ссылок. И вот как будет выглядеть вторая строка:

RewriteRule ^index.php$ / [QSA,R]


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

htaccess-rewrite-718

Как можно закрыть весь сайт или отдельную его часть от индексации

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

  1. User-agent: * — она разрешает вход для всех поисковых машин.
  2. Disallow: / — позволяет закрыть абсолютно все каталоги веб-ресурса от возможности просмотра их поисковыми роботами.

Если вы не пропишите слэш в конце строки Disallow: внутри файла robots.txt, то с точностью наоборот разрешите индексацию для всех папок.


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

Если и нужно закрыть индексацию веб-ресурса, то многие предпочитают это делать именно при помощи файла robots.txt. И это разумно, поскольку сделать это в htaccess куда сложнее. Важно знать правила разметки функций в этом файле конфигураций. Вам необходимо будет указывать имена роботов, чтобы запретить для них индексацию определенных папок. Например, чтобы закрыть для их просмотра папку /images/, нужно сначала прописать строку для одной поисковой системы: RewriteCond %{HTTP_USER_AGENT} ^Google.* [OR], потом для другой, поскольку был указан параметр OR (или): RewriteCond %{HTTP_USER_AGENT} ^.*yandex.*,а уже затем указать папку и правило запрета: RewriteRule ^/images/.*$ – [F]. А если бы файл .htaccess находился внутри папки /images/, то вам бы не пришлось указывать ее название в последней строке: RewriteRule ^.*$ – [F].


Достоинство файла .htaccess в плане настройки запретов индексации в том, что вы можете настроить эту опцию более точно при помощи данного документа. Если в robots.txt нужно указывать напрямую что можно, а что нельзя, то в htaccess вы можете прописать всяческие условия для запрета индексации. К примеру, вы можете заблокировать индекс всего сайта, а его поддомены оставить. Либо вы можете несколькими способами прикрыть индексацию ссылок на сайте. Например, сделать так, чтобы поисковый робот при переходе по ссылке на сайте попадал на главную страницу, а пользователь переходил по настоящему URL.

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

e-webmaster.ru


.htaccess — файл дополнительной конфигурации веб-сервера Apache, а также подобных ему серверов. .htaccess является подобием httpd.conf с той разницей, что действует только на каталог, в котором располагается, и на его дочерние каталоги. Возможность использования .htaccess в том или ином каталоге указывается в httpd.conf.

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

DirectoryIndex index.php index.html

Включить расширение mod_rewrite:

RewriteEngine On

Определение кодировки, в которой сервер «отдает» файлы (варианты: KOI8-R, UTF-8, Windows-1251):

AddDefaultCharset windows-1251

Определение кодировки на загружаемые файлы (варианты: KOI8-R, UTF-8, Windows-1251):

CharsetSourceEnc windows-1251

Задаем собственные страницы ошибок:

ErrorDocument 404 http://www.site.ru/404.php

Эта директива задает файл, который будет вызван при обращении к директории без указания имени файла:

DirectoryIndex index.php
DirectoryIndex index.html index.php index.shtml

Если при передаче файлов через формы (при указанном enctype=»multipart/form-data») бинарные данные повреждаются:

CharsetRecodeMultipartForms Off

Сохранение(загрузка) файлов вместо открытия:

AddType application/octet-stream .rar .doc .mov .avi .pdf .xls .mp4

Переадресация по языку:

RewriteEngine on
RewriteCond %{HTTP:Accept-Language} (ru) [NC]
RewriteRule .* КУДА [L]

Директивы Order, Allow, Deny

Order — порядок действия директив Allow и Deny. Allow — разрешить доступ. Deny — отказать в доступе.

Order Allow,Deny
Allow from all
Deny from 100.99.99.1, 100.99.99.2

Директива Options

Директива Options позволяет задать ряд общих параметров, из которых наиболее популярны следующие: ExecCGI (разрешить выполнение CGI -скриптов), FollowSymLinks (обрабатывать симлинки), Includes (разрешить SSI), IncludesNOEXEC (разрешить SSI без запуска скриптов), Indexes (показывать посетителю список файлов, если в выбранном каталоге нет файла index.html или его аналога).

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

Options +Includes

Запрет выдачи листинга каталога без индексного файла

Options -Indexes

Разрешить показывать список файлов в директории без индексного файла:

Options Indexes

Директива IndexIgnore позволяет осуществлять фильтрацию списка файлов по расширению:

IndexIgnore *.php* *.pl

Директива RewriteLock

RewriteLock file-path

Директива RewriteLock определяет имя файла синхронизации, который нужен mod_rewrite для связи с RewriteMap программами.

Директива RewriteLog

RewriteLog file-path

Директива RewriteLog устанавливает имя файла, в котором сервер ведет журнал любых происходящих действий по преобразованиям URL. Если это имя не начинается со слэша (/) в этом случае путь считается от Server Root. В конфигурационном файле сервера эта директива должна встречаться только один раз. Для отключения ведения журнала преобразований не рекомендуется устанавливать Filename в /dev/null, потому что хотя механизм преобразований и не производит вывод в файл журнала, внутри он все ещё ведет журнализацию. Это замедлит сервер без каких-либо преимуществ для администратора! Для отключения ведения журнала либо удалите, либо закомментируйте директиву RewriteLog либо используйте RewriteLogLevel 0!

Директива RewriteLogLevel

RewriteLogLevel N

Директива RewriteLogLevel устанавливает уровень детализации журнала механизма преобразований. По-умолчанию уровень 0, означающий что журнализация не ведется, в то время как 9 или более означает что записываются практически все действия. Для отключения журнализации действий механизма преобразований просто установите уровень на 0. Это отключает ведение журнала для всех преобразований. Использование больших значений уровня очень сильно замедлит ваш сервер Apache! Используйте журнал преобразований на уровне большем чем 2 только для отладочных целей!

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

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

www.maple.su

Что такое .htaccess? (Hypertext Access)

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

Из-за специфики названий тип файла htaccess не всегда заметен. Чтобы его увидеть, необходимо активировать “ dot files ” или “ .files ” в вашем программном обеспечении FTP/Cpanel. Если возникают сложности, можно создать и редактировать файл как .txt (просто изменить расширение и название во время загрузки).

htaccess настройка

Всегда делайте бэкап htaccess, когда собираетесь внести какие бы то ни было изменения. Если ошибетесь, сайт высветит ошибку 500 Internal Server Error, и для последнего изменения можно будет просто поместить символ # перед кодом в файле htaccess.

  1. Вы можете комментировать ссылки в htaccess с помощью # , количество символов не имеет значения; к примеру, ## или ### можно использовать для описательных комментариев, а один # — для активации/деактивации кода.
  2. Используйте блокнот для редактирования в Windows, это удобно.
  3. Всегда делайте бэкап.
  4. Htaccess применяется к каталогу, в котором находится, и, таким образом, ко всем каталогам уровнем ниже; это значит, что при перемещении в корневой каталог, он сможет управлять всем сайтом.
  5. Ошибки в htaccess провоцируют 500 Internal Server Error ( внутреннюю ошибку сервера), но без паники — восстановите резервную копию или откомментируйте последний код.

htaccess

Перезапись кода

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

## Rewrite Engine Code ##

Options +FollowSymLinks

RewriteEngine on

Управление ошибками

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

Вы можете создавать собственные страницы в любом формате PHP/HTML.

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

Если поместите URL целиком, тогда статус 404 не появится, скорее всего будет 301 или 200 Error.

ErrorDocument 404 http://www.example.com/404.html

## Error Handling Codes ##

ErrorDocument 401 /401.html

ErrorDocument 403 /403.html

ErrorDocument 404 /404.html

ErrorDocument 400 /400.html

Можно использовать больше или меньше кодов. Полный список кодов ошибок по ссылке Wikipedia.

Временная блокировка индексации

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

Это больше относится к сфере общей безопасности и юзабилити, чем к SEO .

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

## Block Index Display ##

Options All -Indexes

Set Default Index File

В любом случае, это удобный код. Нужно только изменить файл; тип файла не обязательно должен быть в HTML.

## Set Default Index Files ##

DirectoryIndex newindex.html

Защита Htaccess

Ваш файл htaccess потенциально уязвим, поэтому обезопасьте его.

## Secure htaccess file ##

<Files .htaccess>

Order Allow,Deny

Deny from all

</Files>

Если у вас WordPress, такой код защитит файл wp-config.php.

## Secure wp-config.php ###

<Files wp-config.php>

Order Allow,Deny

Deny from all

</Files>

Защита локации паролем

С помощью htaccess вы можете защитить определенные сегменты сайта. Вот полезный инструмент для создания этих файлов http://www.tools.dynamicdrive.com/password/

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

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

MyUsername:MyPassword

Нужно загрузить файл htpasswd в соответствующее место на сервере с помощью любой программы для пересылки файлов, это должен быть каталог не для общего доступа (не помещайте в /www/ или /htdocs/ ). И еще нужно записать путь файла из корневого каталога, это может выглядеть так:

/private/script/.htpasswd “.

После загрузки в htaccess добавляется новый раздел.

AuthName “Restricted Area”

AuthType Basic

AuthUserFile /private/script/.htpasswd

<Files /downloads>

require valid-user

</Files>

Блокировка прямых ссылок (хотлинкинг)

htaccess экономит полосу пропускания, таким образом решается проблема известная как хотлинк ( включение в веб-страницу ресурсов чужого сервера) .

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

## Block Hotlinking ##

RewriteEngine On

RewriteCond %{HTTP_REFERER} !^http://(.+.)?mysite.com/ [NC]

RewriteCond %{HTTP_REFERER} !^$

RewriteRule .*.(jpe?g|gif|bmp|png)$ – [F]

Если только 1-2 специфических сайта (обычно социальные) приводят к данной проблеме, используйте код:

## Block Hotlinking ##

RewriteEngine On

RewriteCond %{HTTP_REFERER} ^http://(.+.)?myspace.com/ [NC,OR]

RewriteCond %{HTTP_REFERER} ^http://(.+.)?friendfeed.com/ [NC,OR]

RewriteCond %{HTTP_REFERER} ^http://(.+.)?livejournal.com/ [NC]

RewriteRule .*.(jpe?g|gif|bmp|png)$ – [F]

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

«Сохранить как»

Если у вас блог или другой контентный сайт, определенные файлы будут провоцировать диалог “Save As” (сохранить как), вместо того, чтобы браузер их загружал. Этот код идеален для каталога ресурсов.

Целесообразнее выбрать определенный подкаталог для кода.

## Force a file to download with a “Save As” ##

AddType application/octet-stream .doc .mov .avi .pdf .xls .mp4

Перенаправить всех, c сохранением IP

Этот способ удобен во время внеплановых работ по технической части.

## Redirect Everyone but Selected IP Address ##

ErrorDocument 403 http://www.myoldsite.com

Order deny,allow

Deny from all

Allow from 111.111.111.111

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

Выборочная блокировка IP

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

Также вы можете с помощью этого сайта сгенерировать код блокировки любых IP:

Block IPs with .htaccess

## Block IP Address ##

order allow,deny

deny from 127.0.0.1

deny from 127.0.0.2

deny from 127.0.0.3

allow from all

Раздел 2: перенаправления и перепись

Htaccess позволяет переписать и изменить URL, заменить автоматически созданные ссылки.

Перенаправление с http:// на www

Это старая проблема — добиться, чтобы сайт индексировался и в http://mydomain.com, и в www.mydomain.com.

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

Данная часть кода превратит любой запрос для версии http в www.

## Redirect non-www to the www version ##

RewriteCond %{HTTP_HOST} ^example.com [NC]

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

Измените example.com на своей домен.

Перенаправление файла индекса (Index File) в корневой каталог

Еще одна проблема двойной индексации: поисковики индексируют и

www.example.com/ и www.example.com/index.php.

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

## Redirect index to root ##

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /.*index.html HTTP/

RewriteRule ^(.*)index.html$ /$1 [R=301,L]

В этом коде нужно изменить и название файла индекса (в 99% случаев это просто индекс), и расширение (обычно html, htm or php).

Перенаправление всех страниц на SSL

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

Еще понадобится сертификат безопасности и настройки сервера.

RewriteBase /

RewriteCond %{REMOTE_HOST} !^111.11.11.11

RewriteCond %{REQUEST_URI} !^/downtime.html$

RewriteRule ^(.*)$ /downtime.html [R=302,L]

## Redirect all Pages to Secure ##

RewriteCond %{HTTPS} !on

RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

Стандартное перенаправление 301

Перенаправление 301 сообщает Google и браузерам, что запрашиваемая страница перемещена в другое место.

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

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

## Standard 301 Redirect for Permanent Changes ##

redirect 301 /old-page.html http://www.example.com/newpage.html

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

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

Стандартное перенаправление (301) — подкаталог

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

Есть два способа сделать это:

## Redirect for a Directory – Preserves Request ##

RedirectMatch 301 ^/old-folder(.*) http://www.example.com/$1

Первый — сохраняет запрашиваемый файл. Если кто-то запрашивает mysite.com/blog/example.html — последует перенаправление на mystie.com/example.html.

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

Лучше убедиться, что новые файлы присутствуют, в противном случае появится 404.

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

## Redirect a Directory – Does not preserve Request ##

RedirectMatch 301 ^/old-folder(.*)$ http://www.example.com/new-page.php

Опять же, кастомизировать эти коды очень просто. Нужно лишь вписать старый каталог и новые локации . Если хотите перенаправить на новый подкаталог, просто измените окончание url, чтобы там был подкаталог, но проверьте, что вы оставили $1 в первом примере.

302

Разница между пренаправлениями 301 и 302 в том, как их фиксируют поисковые роботы. Google вряд ли обновит свой индекс для 302, но для 301 это очень даже вероятно. 302 стоит использовать только тогда, когда изменения временные и вы хотите, чтобы Google их игнорировал. Чтобы превратить перенаправление в 302, просто измените цифру в начале. Это работает применительно ко всем сниппетам кодов перенаправления, где используется 301.

## Standard 302 Redirect for Temporary Changes ##

redirect 302 /old-page.html http://www.example.com/newpage.html

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

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

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

## Code to make all HTML requests become PHP requests ##

RedirectMatch 301 (.*).html$ http://www.example.com$1.php

Для кастомизации вы можете заменить типы файлов, в данном случае html — старый тип, а php — новый.

Перенаправьте все подкаталоги, за исключением корневого каталога

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

## Redirect an Entire Domain – Preserve Request ##

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

 

## Redirect all Subfolders to New Domain but Keep Root Intact ##

RewriteRule ^([^/]+)/(.*)$ http://www.example.com/$1/$2/$3 [R=301,L]

Перенаправление всего домена

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

У вас должен быть Google Webmaster Tools, установленный на старом домене, затем вы сможете сообщать Google, что перемещаете домены.

Есть два способа: с сохранением запросов и без. Если у нового домена будет такой же сайт и столько же страниц и ресурсов, тогда лучше сохранить запросы. Другими словами, пользователь, запрашивающий /best-page.html на старом сайте, увидит best-page.html на новом.

Вы можете сделать полное перенаправление домена без сохранения запросов.

По сути, нужно отдельно перенаправить разделы веб-сайта на соответствующие разделы нового сайта, но есть более простой способ.

## Redirect an Entire Domain – No Preservation ##

Redirect 301 / http://www.newdomain.com

файл htaccess

Перепись динамического URL

Большинство динамических URL выглядят примерно так:

http://www.mysite.com/posts.php?category=widgets

Они состоят из домена, файла и строки запросов, которая, в свою очередь, состоит из двух частей : поля и значения.

Для оптимизации URL нужно убрать строку запросов и использовать ее для создания структурированного URL.

В первом случае сделаем URL, который заканчивается как статический файл, то есть превратим URL в http://www.mysite.com/posts-about-widgets.php

RewriteRule ^posts-about-([^/]+).php/?$ /posts.php?category=$1&foo=bar [L]

RewriteCond %{QUERY_STRING} category=([^/]+)

RewriteCond %{QUERY_STRING} !foo=bar

Задается маппинг старого URL на новом.

Здесь три линии; первая определяет место старого URL на новом, вторая — место 1-ой строки запросов, третья — точка остановки, чтобы избежать беспрерывного перенаправления.

Первая линия позволяет установить формат новой страницы, в нашем случае это http://www.mysite.com/posts-about-widgets.php.

Вы можете изменить первую часть URL.

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

В этом примере — посты из категории виджетов, поэтому нужны соответствующие ключевые слова в URL.

PHP — тип файла, который используется в данном случае, но это может быть html или htm.

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

Вторая линия содержит ссылку на переменную, понадобится изменить поле — добавить ваш URL, а все остальное оставить. По сути, этот код сообщает: «любое количество различных символов и цифр».

Теперь у нас новая страница, но, вероятнее всего, система все еще будет генерировать старые ( уродливые) URL, поэтому нужно перенаправить людей на новую страницу. Для этого понадобится правило переписи/замены Rewrite Rule , которое заменяет запросы для строки запросов в новом ярком URL:

RewriteRule ^posts.php$ /posts-about-%1.php? [L,R=301]

Относительно просто, не так ли? Нужно только поместить ваш старый URL в первую часть, ваш новый URL — во вторую часть. И вуа-ля! Динамическое перенаправление на новую страницу со старой переменной готово!

Совместим части кода. Мы заменили пример с текстом для вставки, чтобы запомнить части, к которым относится каждое утверждение (statement).

Возможно, вы захотите перейти к новому типу URL, возможно, вернуться обратно, к странице http://www.mysite.com/posts/widgets instead of that .php. Это также возможно, нужно лишь немного изменить код.

## Rewrite Dynamic URL to A Static Page ##

RewriteRule ^new-page-([^/]+).php/?$ /old.php?field=$1&foo=bar [L]

RewriteCond %{QUERY_STRING} field=([^/]+)

RewriteCond %{QUERY_STRING} !foo=bar

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

 

## Rewrite Dynamic URL to A Static SubFodler ##

RewriteRule ^new-folder/([^/]+)/?$ /old.php?field=$1&foo=bar [L]

RewriteCond %{QUERY_STRING} field=([^/]+)

RewriteCond %{QUERY_STRING} !foo=bar

RewriteRule ^old.php$ /new-folder/%1/? [L,R=301]

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

Раздел 3: скорость и тонкая настройка

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

GZIP compression

GZIP compression — серверная функция, которая уменьшает вес веб-страниц и скриптов прежде, чем они отправляются в браузер.

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

Есть несколько вариантов активировать GZIP. Не нужно изменять код — просто скопируйте и вставьте.

На этом сайте можно проверить, активирован ли GZIP на вашем ресурсе, и сколько времени/места сэкономлено.

http://www.gidnetwork.com/tools/gzip-test.php

Вот четыре способа, выберите один из них:

## Enable GZIP Version 1 ##

php_value output_handler ob_gzhandler

css_value output_handler ob_gzhandler

js_value output_handler ob_gzhandler

 

##ENABLE GZIP Version 2##

<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>

 

##Enable GZIP Version 3##

<Files *.php>

SetOutputFilter DEFLATE

</Files>

<Files *.js>

SetOutputFilter DEFLATE

</Files>

<Files *.css>

SetOutputFilter DEFLATE

</Files>

<Files *.html>

SetOutputFilter DEFLATE

</Files>

 

##Enable GZIP Version 4##

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

Активация кэширования

Кэширование позволяет постоянным посетителям не загружать повторно каждый элемент сайта. Если у вас WordPress, тогда можно взять несколько плагинов, например WP Hyper Cache.

Если у вас статический сайт, htaccess дает возможность применить кэширование. Стоит все перепроверить. Если у вас нестандартная CMS, или какой-либо динамический контент, ошибки с кэшированием могут привести к тому, что сайт перестанет обновляться. Поэтому стоит консультироваться с разработчиками.

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

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

## Enable Caching ##

## Files to Cache for One Month ##

<FilesMatch “.(flv|gif|jpg|jpeg|png|ico|swf)$”>

Header set Cache-Control “max-age=2592000”

</FilesMatch>

 

## Files to Cache for One Week ##

<FilesMatch “.(js|css|pdf|txt)$”>

Header set Cache-Control “max-age=604800”

</FilesMatch>

## Files to Cache for One Day ##

<FilesMatch “.(html|htm)$”>

Header set Cache-Control “max-age=43200”

</FilesMatch>

 

## Disable cache for script files ##

<FilesMatch “.(pl|php|cgi|spl|scgi|fcgi)$”>

Header unset Cache-Control

</FilesMatch>

GZIP и кэширование существенно улучшают производительность сайта.

Минимизация 404 за счет проверки грамматических ошибок

Check Spelling — это модуль сервера Linux Server Module. Check Spelling проверяет сервер на предмет наличия подобных URL.

К примеру, пользователь допускает ошибку, вписывая в браузер такой адрес:

http://www.mysite.com/caje/red.html

Но на самом деле он/она хотел написать:

http://www.mysite.com/cake/red.html

Check Spelling фиксирует такую незначительную ошибку и исправляет ее (если, конечно, не существует caje/red.html). Также учитывается состояние регистра строчных и прописных символов в URL.

##Make Linux correct case sensitive urls/slight typos in urls##

CheckSpelling On

astra.red

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

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

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

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

Важно! Работоспособность указанных ниже правил (директив) зависит от настроек вашего web-сервера, заданных хостером, поэтому некоторые директивы могут быть запрещены и не работать.

Важно! Злоупотребление использованием .htaccess может привести к снижению производительности вашего сайта. Использовать .htaccess для реализации той или иной задачи стоит только в том случае, если нет других вариантов.

Правила .htaccess

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

Options +FollowSymlinks
#Запрещаем загрузку файлов с внешних сайтов
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www.)?your_domain.com/ [nc]
RewriteRule .*.(gif|jpg|png)$ http://your_domain.com/img/goaway.gif[nc]

Не забудьте изменить your_domain.com на ваше доменное имя и создать изображение goaway.gif, которое будет показано вместо запрошенной картинки.

2. Блокируем все запросы от нежелательных User Agents
Это правило позволяет блокировать нежелательные 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>

Список User Agent браузеров, роботов и пауков поисковых машин, веб-каталогов, менеджеров закачек, спам-ботов и плохих ботов можно найти на сайте http://www.user-agents.org/

3. Запрещаем доступ для всех, кроме указанных IP-адресов
Если по какой-либо причине, вы хотите запретить всем или разрешить только отдельным IP-адресам доступ к вашему сайту — добавьте этот код в ваш .htaccess-файл:

#Запрещаем доступ для всех, кроме указанных IP-адресов
ErrorDocument 403 http://your_domain.com
Order deny,allow
Deny from all
Allow from IP1
Allow from IP2 и т. д.

Не забудьте изменить your_domain.com и IP1,2 и т.д. на ваше доменное имя и необходимые IP-адреса соответственно.

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

#Создаем черный список IP адресов
allow from all
deny from IP1
deny from IP2 и т. д.

В случае, если причиной блокировки IP-адреса является назойливые спам-комментарии, узнать IP-адреса комментаторов можно или в логах Apache, или с помощью сервисов статистики. Для WordPress, IP-адреса комментаторов можно увидеть в административной панели. Таким же образом возможно заблокировать доступ на сеть IP-адресов, указав «deny from IP/маска сети».

#Создаем черный список для подсети
allow from all
deny from 192.168.0.0/24

5. Настраиваем SEO-Friendly 301 Redirect
Если вы перенесли доменное имя или хотите перенаправлять пользователя на определенную страницу (страницы), без санкций со стороны поисковых машин, используйте этот код:

#Настраиваем SEO-Friendly 301 Redirect
Redirect 301 /d/file.html http://your_domain.com/r/file.html

Не забудьте изменить your_domain.com на ваше доменное имя, а /d/file.html и /r/file.html на соответствующие директории и страницы.

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

ErrorDocument 401 /error/401.php
ErrorDocument 403 /error/403.php
ErrorDocument 404 /error/404.php
ErrorDocument 500 /error/500.php

Не забудьте создать в корневой директории вашего сервера папку «error» и разместить в ней соответствующие файлы.

7. Устанавливаем e-mail адрес по умолчанию для администратора сервера
Используйте данный код, для того, чтобы установить e-mail адрес по-умолчанию для администратора сервера:

#Устанавливаем e-mail адрес по умолчанию для администратора сервера
ServerSignature EMail
SetEnv SERVER_ADMIN default@your_domain.com

Не забудьте заменить default@your_domain.com— необходимым вам e-mail адресом.

8. Защищаем определенный файл
Приведенный ниже код позволяет вам запретить доступ к любому файлу — при запросе будет выдаваться ошибка 403. На примере закрыт доступ к самому файлу .htaccess – таким образом можно повысить уровень безопасности сайта:

#Защищаем .htaccess файл
<files .htaccess>
order allow,deny
deny from all
</files>

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

#Сжимаем компоненты сайта путем включения Gzip
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

Обратите внимание, что включение компрессии приведет к большей нагрузке на процессор сервера.

10. Сжимаем элементы с помощью mod_deflate
В качестве альтернативы компрессии файлов с помощью Gzip, вы можете использовать mod_deflate (предположительно, работает быстрее). Разместите следующий код в начале вашего файла .htaccess (так же вы можете добавить .jpg|.gif|.png|.tiff|.ico):

#Сжимаем элементы с помощью mod_deflate
<ifmodule mod_deflate.c=””>
<filesmatch .(js|css)$=””>
SetOutputFilter DEFLATE
</filesmatch>
</ifmodule>

11. Добавляем срок жизни в заголовки
Данный код позволяет добавить сроки жизни в заголовки:

#Добавляем срок жизни в заголовки
<filesmatch .(ico|pdf|flv|jpg|jpeg|png|gif|swf)$=””>
Header set Expires “Wed, 31 December 2014 20:00:00 GMT+2”
</filesmatch>

12. Устанавливаем страницы по умолчанию
Обычно страницей по умолчанию является index.html, однако с помощью этого кода вы можете назначить любую другую страницу по умолчанию:

#Устанавливаем альтернативную страницу по умолчанию
DirectoryIndex yourpage.html

Не забудьте заменить yourpage.html — необходимой вам страницей

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

#защита паролем файла
<files secure.php=””>
AuthType Basic
AuthName “Prompt”
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

Для того, чтобы организовать доступ к файлу по паролю, необходимо создать файл .htpasswd и внести в него пару логин-пароль в формате user:password. Однако в этом случае пароли будут хранится в открытом виде, что не слишком хорошо с точки зрения безопасности. Поэтому оптимальным решением будет пароль зашифровать. Для этого воспользуйтесь сервисами генерации записей в файлы .htpasswd.
Например, http://www.htaccesstools.com/htpasswd-generator/
В примере файл с паролями доступа лежит в корневой директории сайта и называется .htpasswd. Директория указывается от корня сервера и если путь будет некорректным — Apache, не получив доступа к файлу, откажет в доступе к папке любому пользователю — в том числе и тому, который ввел правильную пару логин: пароль.

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

#Перенаправляем со старого домена – на новый
RewriteEngine On
RewriteRule ^(.*)$ http://www.yournewdomain.com/$1 [R=301,L]

Перенаправление используется в том случае, если вы переносите свой существующий сайт на новое доменное имя. В этом случае любой пользователь, который наберет в адресной строке http://www.yourolddomain.com — будет перенаправлен на http://www.yournewdomain.com.

15. Усиливаем кеширование
Использование этого правила не означает прямое ускорение загрузки вашего сайта. Оно предназначено для более быстрой загрузки сайта — для уже заходившего на него посетителя, путем отправки статуса 304 для тех элементов, которые не обновлялись. Таким образом, при повторной загрузке страницы браузер посетителя не будет заново скачивать изображения, скрипты или CSS, а выведет те файлы, которые уже хранятся в его кеше. Вы можете изменить срок жизни кеша, путем корректирования его значения в годах (year), месяцах (month) или, например — секундах (seconds):

#Усиливаем кеширование
FileETag MTime Size
<ifmodule mod_expires.c>
<filesmatch “.(jpg|gif|png|css|js)$”>
ExpiresActive on
ExpiresDefault “access plus 1 month”
</filesmatch>
</ifmodule>
В примере указан 1 месяц.

16. Удаляем «category» из URL
Для изменения ссылки http://yourdomain.com/category/news на http://yourdomain.com/news, просто добавьте следующий код в конце вашего .htaccess файла:

#Удаляем category из URL
RewriteRule ^category/(.+)$ http://www.yourdomain.com/$1 [R=301,L]

Не забудьте изменить http://www.yourdomain.com на ваше доменное имя.

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

#Запрещаем просмотр содержимого папки
Options All -Indexes

Существует альтернативное решение, имеющее такой же результат, для этого необходимо разместить в каждой папке вашего сайта пустой файл index.html. Этот метод будет работать только в том случае, если вы не изменяли страницу по умолчанию (см. правило 12). Если изменения были проведены, необходимо размещать файлы с тем новым именем, которое было задано вами в качестве страницы по умолчанию.

18. Перенаправляем RSS-ленту WordPress на FeedBurner
Этот код позволяет перенаправить RSS-ленту СMS WordPress на сервис Google Feedburner:

#Перенаправляем RSS-ленту WordPress на FeedBurner
<ifmodule mod_rewrite.c=””>
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} !FeedBurner [NC]
RewriteCond %{HTTP_USER_AGENT} !FeedValidator [NC]
RewriteRule ^rss.xml$ http://feeds.feedburner.com/yourfeed [R=302,NC,L]
</ifmodule>

Изначально необходимо зарегистрировать ленту своего блога в сервисе Feedburner от Google. Далее не забудьте заменить yourfeed на имя вашей ленты уже в Feedburner.

19. Запрещаем комментарии от пользователей без Referrer
Чаще всего спам-боты обращаются напрямую к файлу wp-comments-post.php, не заходя на страницы записей вашего блога. Приведенный ниже код позволяет заблокировать комментарии, отправленные пользователями, которые пришли «из ниоткуда», позволяя комментировать тем читателям, которые перешли на страницу вашего блога с каких-либо других страниц (например, результатов поиска Google, Yandex и т.д.):

#Запрещаем комментарии от пользователей без Referrer
RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .wp-comments-post.php*

RewriteCond %{HTTP_REFERER} !.*yourblog.com.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]
Не забудьте заменить yourblog.com на доменное имя вашего блога.

20. Убираем расширение файла из URL
Данный код позволяет удалить расширение файла .php (вы можете изменить его на любое другое, например на т 2.html) из URL-адресов страниц:

#Убираем расширение файла из URL
RewriteRule ^(([^/]+/)*[^.]+)$ /$1.php [L]

21. Защищаем сайт
Данный код позволяет защитить ваш сайт от scripts enjection и нежелательных модификаций «_REQUEST» и/или «GLOBALS»:

#Включаем отслеживание сим-ссылок
Options +FollowSymLinks
#Запускаем url_rewriting
RewriteEngine On
#Блокируем все ссылки, содержащие <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]

Источник: WPRecipes.

22. Перенаправляем посетителя с помощью директивы RedirectMatch и регулярных выражений
Еще одна полезная директива, рекомендуемая к использованию Хайпер – RedirectMatch. Цитата из комментариев: «Директива позволяет в качестве запрашиваемого адреса использовать регулярное выражение (пересылка не «с документа», а «со всех документов, типа …»). Редирект внешний — браузеру сообщается о необходимости загрузить другую страницу. Синтаксис:

RedirectMatch [status] regexp URL

Значения статусов (код возврата веб-сервера) стандартные: permanent (301 — постоянный редирект), temp (302 — временный редирект, приходите ещё), seeother (303 — летим туда, там много вкусного), gone (410 — удалён навсегда). Пример. То же перенаправление со старого домена на новый без подключения RewriteEngine:

RedirectMatch 301 ^(.*)$ www.yourdomain.com/$1
Вы можете использовать не только статусы, но и другие условия:
RedirectMatch (.*).gif$ http://www.myserver.com$1.png
RedirectMatch (.*.jpg)$ http://www.myanother.com$1

23. Устанавливаем редирект для URL с GET параметрами
В том случае, если нужно сделать редирект с URL с параметрами, например: «http://www.eviladmin.com.ua/wp-trackback.php?p=264», описанная в п. 5. «Настраиваем SEO-Friendly 301 Redirect» конструкция — работать не будет, поскольку GET параметр мешает правильной интерпретации команды.
Для корректного перенаправления URL с GET запросом, нужно прописать следующие директивы (на примере URL: http://www.eviladmin.com.ua/wp-trackback.php?p=264):

1. RewriteEngine On
2. RewriteCond %{QUERY_STRING} ^p=264$
3. RewriteRule ^wp-trackback.php$ http://www.eviladmin.com.ua/article-2242.html? [L,R=301]

Обратите внимание, «?» в конце URL не ошибка — а обязательно присутствующий знак!

24. Включение PHP в .html файлах
Еще одна директива, позволяет убрать сопоставление по-умолчанию .html и .htm файлов с файлами с гипертекстовой разметкой, и добавить их обработку php-интепретатором:

RemoveHandler .html .htm
AddType application/x-httpd-php .php .htm .html .phtml

 

blog.ukrnames.com


You May Also Like

About the Author: admind

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

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.