Htaccess — Options Indexes, DirectoryIndex, IndexIgnore и прочие опции
Сайт невозможно правильно настроить, если не влазить в файлы конфигураций, такие как 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, будет открываться листинг папки со списком файлов внутри.
Учтите, что опция 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 у себя на ресурсе. К сожалению, мало кто пользуется этой командой, потому у вас есть все шансы стать первооткрывателем возможностей данной опции.
В чем разнца между 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 по мере того, как будут появляться конфиденциальные файлы в каталоге листинга.
Как убрать упоминание об 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. Достаточно часто, чтобы закрыть ресурс от индексации, используют файл robots.txt. Он необходим как раз для того, чтобы управлять поисковыми роботами, потому разумно указывать параметры индексации именно в нем. Так, чтобы закрыть доступ ко всем директивам сайта в файле robots.txt можно прописать всего две строчки:
- User-agent: * — она разрешает вход для всех поисковых машин.
- 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 гораздо лучше, чем вебмастера Рунета, судя по однообразности обучающих материалов в русском Интернете.
Получается для SEO когда Options -Indexes будет хуже для индексации, когда появляется надпись об ошибке. Но ведь access forbidden можно обработать и показать другую страничку =)