Форма входа

Статьи сайта

Руководство по .htaccess для начинающих дизайнеров и разработчиков.


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

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

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

Зачем использовать файл .htaccess?


Это отличный вопрос, и возможно нам следует начать с ответа «что такое файл .htaccess»? Это очень специальный файл конфигурации, используемый веб-сервером Apache. Файл .htaccess может сообщить веб-серверу, как представлять различные формы информации и как обрабатывать различные заголовки HTTP-запроса.

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

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

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

Разрешить / запретить доступ (Allow / Deny Access)


Можно распознать потенциальных посетителей спама и запретить им доступ к вашему сайту. Это может быть немного экстремально, однако, если вы знаете, что какой-то человек или группа людей нацелены на ваш сайт, есть несколько вариантов на выбор. Вы можете выбрать реферал домена, чтобы запретить или заблокировать посетителей по IP-адресу.
Код
order allow,deny
deny from 255.0.0.0
deny from 123.45.6.
allow from all

Эти примеры кодов были скопированы из руководства Htaccess, поскольку они являются идеальным шаблоном для начала работы. Обратите внимание, что на 2-м IP-адресе отсутствует 4-е целое число. Этот блок кода будет предназначен для первого IP-адреса (255.0.0.0) и каждого IP-адреса в диапазоне 123.45.6.0-255, а затем разрешит весь другой трафик. Веб-мастера не могут использовать это так часто, как другие методы, но это полезно понять.

Запретить каталогизацию


Будут времена, когда у вас будет открытый каталог, который по умолчанию настроен на просмотр. Это означает, что пользователи могут просматривать все файлы, перечисленные во внутренней структуре каталогов, например, в папке с изображениями. Некоторые веб-мастера не хотят допускать списки каталогов, и, к счастью, фрагмент кода довольно легко запомнить.
Код
Options -Indexes

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

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

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


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

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

Я бы порекомендовал использовать этот генератор htpassword, чтобы вы могли сэкономить немного времени. Синтаксис всегда будет идеальным, и вам не нужно шифровать пароль самостоятельно. И другой отличный вариант - защитить паролем весь каталог. Мы можем видеть этот пример в галерее фрагментов кода CSS-Tricks.
Код
AuthType Basic
AuthName "This Area is Password Protected"
AuthUserFile /full/path/to/.htpasswd
Require valid-user


Безопасность для WordPress


Чтобы эффективно использовать эту идею защиты паролем, давайте покажем реальный пример. Этот более сложный фрагмент кода вызовет аутентификацию пользователя для любого, кто получает доступ к файлу WordPress wp-login.php. Вы найдете исходный код в Ask Apache, в котором есть множество других фрагментов защиты WordPress.
Код
<Files wp-login.php>
Order Deny,Allow
Deny from All
Satisfy Any
AuthName "Protected By AskApache"
AuthUserFile /web/askapache.com/.htpasswda1
AuthType Basic
Require valid-user
</Files>

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

Правила перезаписи HTTP-URL


Перезапись URL-адресов, является одним из наиболее распространенных способов использования файлов .htaccess. Установка WordPress по умолчанию может генерировать файл .htaccess прямо из панели администрирования. Это позволяет вам создавать красивые URL, которые не имеют структуры .php?p=1.

Хочется взглянуть на этот пример переписывания, как обновить подчеркивание до тире, так как оно содержит много наиболее важных элементов.
Код
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
   
RewriteRule !\.(html|php)$ - [S=4]
RewriteRule ^([^_]*)_([^_]*)_([^_]*)_([^_]*)_(.*)$ $1-$2-$3-$4-$5 [E=uscor:Yes]
RewriteRule ^([^_]*)_([^_]*)_([^_]*)_(.*)$ $1-$2-$3-$4 [E=uscor:Yes]
RewriteRule ^([^_]*)_([^_]*)_(.*)$ $1-$2-$3 [E=uscor:Yes]
RewriteRule ^([^_]*)_(.*)$ $1-$2 [E=uscor:Yes]
   
RewriteCond %{ENV:uscor} ^Yes$
RewriteRule (.*) http://d.com/$1 [R=301,L]

RewriteEngine и RewriteBase чаще всего могут быть установлены на эти точные значения. Но вам нужно включить RewriteEngine, чтобы все остальное работало. В Интернете есть множество руководств, объясняющих, как включить mod_rewrite, и ваш хостинг-провайдер также cможет помочь.

Обратите внимание, что синтаксис соответствует шаблону RewriteRules вверху. Эти правила используются для сопоставления со случаями, которые отправляются в виде HTTP-запроса. На них отвечает RewriteRule, который в этом случае перенаправляет все на домен d.com. Квадратные скобки, такие как [R = 301, L], называются флагами перезаписи, которые важны, но являются более сложным вопросом.
Цитата
Если вы хотите углубиться в подробности, вы можете найти длинный список флагов на этой странице.

Синтаксис mod_rewrite определенно немного сбивает с толку, но не пугайтесь! Фрагменты могут выглядеть намного проще в других примерах.

Я рекомендую это веб-приложение mod_rewrite, которое поможет вам генерировать примеры кода с использованием реальных URL-адресов. Это замечательный инструмент, потому что вы можете искать различные элементы в синтаксисе, чтобы увидеть, что они на самом деле делают в правилах переписывания.
Код
RewriteRule ^dir/([0-9]+)/?$ /index.php?id=$1 [L]

Не пытайтесь перегружать себя этим сразу. Чтобы по-настоящему понять, как переписать URL-адреса с помощью [0-9a-zA-Z] + и аналогичных шаблонов, может потребоваться 3-4 месяца. Продолжайте практиковаться, и со временем, вы получите все это, как знание здравого смысла.

Фрагменты кода для веб-мастеров


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

Настройка DirectoryIndex


Команда для DirectoryIndex обычно используется в одной строке. Вы можете указать Apache, какие документы должны изначально рассматриваться как «основной» документ. По умолчанию это будет нацелено на такие элементы, как index.html, index.php, index.asp и другие файлы индекса. Но используя этот фрагмент кода, который я скопировал ниже, у вас есть возможность сделать этот корневой документ любым, что вам нравится.
Код
DirectoryIndex index.html index.cgi index.php

Порядок документов должен начинаться с самых важных и переходить по рядам к наименее важным. Так что, если у нас нет файла HTML или CGI, то запасной вариант перейдет к index.php. И вы можете даже назвать эти файлы home.php или someotherfile.php, и это все допустимый синтаксис.

WWW или не WWW поддомен


Google может работать с обеими версиями домена вашего сайта, если вы не укажете www.domain.com или просто domain.com. По моему опыту, лучше всего выбрать один из них и установить его как единственный выбор через .htaccess. Тогда Google не будет индексировать различные URL-адреса, некоторые из которых указывают на поддомен WWW.
Код
# Force WWW Subdomain
RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain.com [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]
   
# No Subdomain
RewriteEngine On
RewriteCond %{HTTP_HOST} !^domain.com$ [NC]
RewriteRule ^(.*)$ http://domain.com/$1 [L,R=301]

Этот фрагмент кода взят из архива CSS-Tricks и представляет собой очень удобное решение. Вы должны обновить домен так, чтобы он соответствовал вашему веб-сайту. В противном случае будут проблемы, и вы сразу же заметите! Но я очень поддерживаю использование одного из этих двух вариантов, и он находится на вершине моего списка задач после запуска нового веб-сайта.

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


Еще один довольно важный фрагмент позволяет принудительно загружать определенные типы мультимедиа вместо отображения в браузере. Я сразу же могу подумать о документах в формате PDF и аудиофайлах в формате MP3, которые могут быть представлены в загружаемом формате, но как убедиться, что они доступны для загрузки? Я нашел похожую статью, опубликованную в Htaccess Guide, в которой описывается этот фрагмент кода.
Код
AddType application/octet-stream .zip .mp3 .mp4

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

Пользовательские документы об ошибках


Последнее, что я хочу добавить, - это полный шаблон документов об ошибках. Обычно эти числовые коды видны только на стороне сервера. Но есть много этих документов об ошибках, с которыми вы должны быть знакомы. Несколько примеров могут быть ошибки 403/404 и перенаправление 301 редирект.

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

Если вы не распознаете код, просто посмотрите его в Википедии, чтобы лучше понять.
Код
ErrorDocument 100 /100_CONTINUE
ErrorDocument 101 /101_SWITCHING_PROTOCOLS
ErrorDocument 102 /102_PROCESSING
ErrorDocument 200 /200_OK
ErrorDocument 201 /201_CREATED
ErrorDocument 202 /202_ACCEPTED
ErrorDocument 203 /203_NON_AUTHORITATIVE
ErrorDocument 204 /204_NO_CONTENT
ErrorDocument 205 /205_RESET_CONTENT
ErrorDocument 206 /206_PARTIAL_CONTENT
ErrorDocument 207 /207_MULTI_STATUS
ErrorDocument 300 /300_MULTIPLE_CHOICES
ErrorDocument 301 /301_MOVED_PERMANENTLY
ErrorDocument 302 /302_MOVED_TEMPORARILY
ErrorDocument 303 /303_SEE_OTHER
ErrorDocument 304 /304_NOT_MODIFIED
ErrorDocument 305 /305_USE_PROXY
ErrorDocument 307 /307_TEMPORARY_REDIRECT
ErrorDocument 400 /400_BAD_REQUEST
ErrorDocument 401 /401_UNAUTHORIZED
ErrorDocument 402 /402_PAYMENT_REQUIRED
ErrorDocument 403 /403_FORBIDDEN
ErrorDocument 404 /404_NOT_FOUND
   
ErrorDocument 405 /405_METHOD_NOT_ALLOWED
ErrorDocument 406 /406_NOT_ACCEPTABLE
ErrorDocument 407 /407_PROXY_AUTHENTICATION_REQUIRED
ErrorDocument 408 /408_REQUEST_TIME_OUT
ErrorDocument 409 /409_CONFLICT
ErrorDocument 410 /410_GONE
ErrorDocument 411 /411_LENGTH_REQUIRED
ErrorDocument 412 /412_PRECONDITION_FAILED
ErrorDocument 413 /413_REQUEST_ENTITY_TOO_LARGE
ErrorDocument 414 /414_REQUEST_URI_TOO_LARGE
ErrorDocument 415 /415_UNSUPPORTED_MEDIA_TYPE
ErrorDocument 416 /416_RANGE_NOT_SATISFIABLE
ErrorDocument 417 /417_EXPECTATION_FAILED
ErrorDocument 422 /422_UNPROCESSABLE_ENTITY
ErrorDocument 423 /423_LOCKED
ErrorDocument 424 /424_FAILED_DEPENDENCY
ErrorDocument 426 /426_UPGRADE_REQUIRED
ErrorDocument 500 /500_INTERNAL_SERVER_ERROR
ErrorDocument 501 /501_NOT_IMPLEMENTED
ErrorDocument 502 /502_BAD_GATEWAY
ErrorDocument 503 /503_SERVICE_UNAVAILABLE
ErrorDocument 504 /504_GATEWAY_TIME_OUT
ErrorDocument 505 /505_VERSION_NOT_SUPPORTED
ErrorDocument 506 /506_VARIANT_ALSO_VARIES
ErrorDocument 507 /507_INSUFFICIENT_STORAGE
ErrorDocument 510 /510_NOT_EXTENDED


Интернет веб-приложения .htaccess


Другие полезные ресурсы



В завершении


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