Что такое.htaccess и как его создать. Попытка номер раз создать почти идеальный htaccess Доступ к файлам и директориям

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

Файл.htaccess можно создать в текстовом редакторе, а затем подгрузить его на сайт с помощью ftp-клиента

Примечание : имя файла.htaccess не содержит дополнительных слов или расширений.

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

Особенности файлов .htaccess

Хотя страница.htaccess невероятно полезна и может заметно улучшить сайт, при ее использовании нужно помнить о двух моментах.

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

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

Как включить файл. htaccess?

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

Примечание : на данном этапе понадобятся sudo-привилегии.

sudo nano /etc/apache2/sites-available/default

Открыв файл, найдите следующий раздел и измените значение директивы AllowOverride с None на All. Раздел должен выглядеть так:


Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all

Сохраните и закройте файл, а затем перезапустите apache.

sudo service apache2 restart

Создание файла .htaccess

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

Или же можно создать такой файл с помощью терминала; для этого используйте следующую команду, заменив example.com именем сайта.

sudo nano /var/www/example.com/.htaccess

Общие случаи использования.htaccess

1. Mod_ Rewrite

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

2. Аутентификация

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

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

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

Имена и пароли вносятся в файл в виде пары имя_пользователя:зашифрованный_пароль. Например, если пользователь с именем best_user имеет пароль awesome, то такая пара может иметь вид «best_user:VtweQU73iyETM».

Примечание : каждая пара вносится в отдельную строку. Файл.htpasswd может содержать столько строк, сколько необходимо.

Создав.htpasswd, внесите в.htaccess следующий код, чтобы активировать функцию аутентификации:

AuthUserFile /usr/local/username/safedirectory/.htpasswd
AuthGroupFile /dev/null
AuthName Please Enter Password
AuthType Basic
Require valid-user

Строка AuthUserFile определяет путь к файлу.htpasswd.

Строка AuthGroupFile указывает расположение.htgroup. Поскольку на данный момент такого файла не существует, оставьте значение /dev/null.

Строка AuthName содержит текст, который будет отображаться в приглашении ввести пароль (можно ввести абсолютно любой текст).

AuthType относится к типу аутентификации, который будет использоваться для проверки паролей. Пароли проверяются через HTTP, ключевое слово Basic изменять нельзя.

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

3. Пользовательские страницы ошибок

Файл.htaccess позволяет создавать для сайта пользовательские страницы ошибок. Некоторые из наиболее распространенных ошибок являются:

  • 400 Bad Request (Неверный запрос)
  • 401 Authorization Required (Требуется авторизация)
  • 403 Forbidden Page (Запрещенная страница)
  • 404 File not Found (Файл не найден)
  • 500 Internal Error (Внутренняя ошибка)

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

Для примера можно создать страницу 404 (попробуйте создать любую страницу ошибки на ваш выбор).

Создав и загрузив страницу ошибки, укажите ее местонахождение в файле.htaccess:

ErrorDocument 404 /new404.html

Запомните : Apache ищет страницу 404 в root-каталоге сайта. Поместив новую страницу ошибки 404 в каком-либо подкаталоге, не забудьте добавить этот подкаталог в строку, например:

ErrorDocument 404 /error_pages/new404.html

4. MIME-типы

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

AddType audio/mp4a-latm .m4a

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

5. SSI

Технология Server Side Includes отлично экономит время на веб-сайте. Одним из наиболее распространенных способов использования SSI является обновление большого количества страниц, содержащих определенный блок данных, без необходимости обновлять каждую страницу по отдельности (например, чтобы изменить цитату в нижней части страницы).

Чтобы включить SSI, введите в.htaccess следующий код:

AddType text/html .shtml
AddHandler server-parsed .shtml

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

Тем не менее, если на сервере находится большое количество страниц.html, поменять расширение которых на.shtml займет много времени, можно использовать другую тактику их проверки на SSI-команды. Для этого используется параметр XBitHack.

Добавление этой строки в файл.htaccess заставляет Apache проверять все html-файлы с соответствующими правами для Server Side Includes.

Чтобы позволить странице использовать XBitHack, введите:

chmod +x имя_страницы .html

Итоги

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

Tags: ,

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

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

Для тех, кто уже сталкивался ранее с данными настройками, то тем можно перейти сразу ко 2-му или 3-му разделу.

Как создать файл htaccess для сайта?

Для начала необходимо скачать текстовый редактор под названием Notepad++, на сайте notepad-plus-plus.org. Этот редактор с улучшенными способностями: подсвечивает код, поддерживает больше форматов файлов. Он вам понадобится и в будущем, когда вы освоитесь, то вам придется править код, и как раз этот редактор станет вашим маленьким и способным помощником.

После установки запустите его и нажмите в меню ФАЙЛ и выберите из выпадающего меню НОВЫЙ

Потом нужно выбрать из меню слово Правка и выбрать из выпадающего меню Конверсия конца строки и далее выбрать Преобразовать в UNIX-формат .

Ну вот и все. Осталось теперь сохранить данный файл. Для этого выберите меню файл , затем Сохранить как и когда откроется окно, перейдите вниз окна и введите в поле Имя файла: .htaccess, а в поле Тип файла: выбрать строчку All types(*.*) и можете нажимать кнопку Сохранить .

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

КАК ОБЕЗОПАСИТЬ САЙТ ОТ ВЗЛОМА С ПОМОЩЬЮ ФАЙЛА htaccess?

Безопасность — это хорошее настроение и гарантия успешности.
Странно начал? … не зря я начал описание с этого слова. Многие и многие сайты страдают от взлома и хакерских атак, результатом которых потеря информации (), потеря работоспособности сайта (пусть даже временная) и уже молчу про стресс и переживания — всё это, в конечном итоге, скажется на вашем доходе от ресурса.

Запугал? дааа, но здесь не до шуток.

Файл htaccess — это дополнительный файл для настроек и конфигурации вашего ресурса. Как правило он находится в главном каталоге вашего ресурса.

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

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

Таких файлов может находиться на вашем сайте сколько угодно. Его права действуют как правило на тот каталог, в котором он находится, а также на все подпапки этого каталога.

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

Минимальные настройки файла htaccess?

После создания сайта у вас уже может быть такой файл и в нем может уже находится следующая информация. Как правило это может быть на сайтах с движком Вордпресс().

order allow,deny deny from all satisfy all

Защищаем файл wp-config.php

Данный файл содержит очень важные параметры сайта, да еще логин и пароль к базе данных. Оставив данную лазейку, вы 100% оставляете дверь открытой для взлома.

Allow from 00.00.00.00

Вместо 00.00.00.00 нужно указать свой статический адрес.

Защищаем директорию wp-content

Этот каталог содержит много нужной информации, которой тоже разбазариваться не стоит, а посему закрываем. Для этого нужно создать такой же файл.htaccess или скопировать из главной директории вашего сайта и вставить туда этот код(предварительно всё стерев из него). Далее полученный файл кладем в директорию wp-content вашего сайта.

В этом коде нужно учесть, что иногда у некоторых не открываются xml или css, то тогда нужно из кода удалить эти данные.

1 2 3 4 5 Order deny,allow Deny from all Allow from all

Order deny,allow Deny from all Allow from all

Защищаем от злостных сканеров и ботов

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

1 2 3 4 5 # BEGIN Bad Bot Blocker #SetEnvIfNoCase User-Agent "Abonti|aggregator|AhrefsBot|asterias|BDCbot|BLEXBot|BuiltBotTough|Bullseye|BunnySlippers|ca\-crawler|CCBot|Cegbfeieh|CheeseBot|CherryPicker|CopyRightCheck|cosmos|Crescent|discobot|DittoSpyder|DOC|DotBot|Download Ninja|EasouSpider|EmailCollector|EmailSiphon|EmailWolf|EroCrawler|Exabot|ExtractorPro|Fasterfox|FeedBooster|Foobot|Genieo|grub\-client|Harvest|hloader|httplib|HTTrack|humanlinks|ieautodiscovery|InfoNaviRobot|IstellaBot|Java/1\.|JennyBot|k2spider|Kenjin Spider|Keyword Density/0\.9|larbin|LexiBot|libWeb|libwww|LinkextractorPro|linko|LinkScan/8\.1a Unix|LinkWalker|LNSpiderguy|lwp\-trivial|magpie|Mata Hari|MaxPointCrawler|MegaIndex|Microsoft URL Control|MIIxpc|Mippin|Missigua Locator|Mister PiX|MJ12bot|moget|MSIECrawler|NetAnts|NICErsPRO|Niki\-Bot|NPBot|Nutch|Offline Explorer|Openfind|panscient\.com|PHP/5\.\{|ProPowerBot/2\.14|ProWebWalker|Python\-urllib|QueryN Metasearch|RepoMonkey|RMA|SemrushBot|SeznamBot|SISTRIX|sitecheck\.Internetseer\.com|SiteSnagger|SnapPreviewBot|Sogou|SpankBot|spanner|spbot|Spinn3r|suzuran|Szukacz/1\.4|Teleport|Telesoft|The Intraformant|TheNomad|TightTwatBot|Titan|toCrawl/UrlDispatcher|True_Robot|turingos|TurnitinBot|UbiCrawler|UnisterBot|URLy Warning|VCI|WBSearchBot|Web Downloader/6\.9|Web Image Collector|WebAuto|WebBandit|WebCopier|WebEnhancer|WebmasterWorldForumBot|WebReaper|WebSauger|Website Quester|Webster Pro|WebStripper|WebZip|Wotbox|wsr\-agent|WWW\-Collector\-E|Xenu|yandex|Zao|Zeus|ZyBORG|coccoc|Incutio|lmspider|memoryBot|SemrushBot|serf|Unknown|uptime files" bad_bot #SetEnvIfNoCase Referer "Abonti|aggregator|AhrefsBot|asterias|BDCbot|BLEXBot|BuiltBotTough|Bullseye|BunnySlippers|ca\-crawler|CCBot|Cegbfeieh|CheeseBot|CherryPicker|CopyRightCheck|cosmos|Crescent|discobot|DittoSpyder|DOC|DotBot|Download Ninja|EasouSpider|EmailCollector|EmailSiphon|EmailWolf|EroCrawler|Exabot|ExtractorPro|Fasterfox|FeedBooster|Foobot|Genieo|grub\-client|Harvest|hloader|httplib|HTTrack|humanlinks|ieautodiscovery|InfoNaviRobot|IstellaBot|Java/1\.|JennyBot|k2spider|Kenjin Spider|Keyword Density/0\.9|larbin|LexiBot|libWeb|libwww|LinkextractorPro|linko|LinkScan/8\.1a Unix|LinkWalker|LNSpiderguy|lwp\-trivial|magpie|Mata Hari|MaxPointCrawler|MegaIndex|Microsoft URL Control|MIIxpc|Mippin|Missigua Locator|Mister PiX|MJ12bot|moget|MSIECrawler|NetAnts|NICErsPRO|Niki\-Bot|NPBot|Nutch|Offline Explorer|Openfind|panscient\.com|PHP/5\.\{|ProPowerBot/2\.14|ProWebWalker|Python\-urllib|QueryN Metasearch|RepoMonkey|RMA|SemrushBot|SeznamBot|SISTRIX|sitecheck\.Internetseer\.com|SiteSnagger|SnapPreviewBot|Sogou|SpankBot|spanner|spbot|Spinn3r|suzuran|Szukacz/1\.4|Teleport|Telesoft|The Intraformant|TheNomad|TightTwatBot|Titan|toCrawl/UrlDispatcher|True_Robot|turingos|TurnitinBot|UbiCrawler|UnisterBot|URLy Warning|VCI|WBSearchBot|Web Downloader/6\.9|Web Image Collector|WebAuto|WebBandit|WebCopier|WebEnhancer|WebmasterWorldForumBot|WebReaper|WebSauger|Website Quester|Webster Pro|WebStripper|WebZip|Wotbox|wsr\-agent|WWW\-Collector\-E|Xenu|yandex|Zao|Zeus|ZyBORG|coccoc|Incutio|lmspider|memoryBot|SemrushBot|serf|Unknown|uptime files" bad_bot #Deny from env=bad_bot # END Bad Bot Blocker

# BEGIN Bad Bot Blocker #SetEnvIfNoCase User-Agent "Abonti|aggregator|AhrefsBot|asterias|BDCbot|BLEXBot|BuiltBotTough|Bullseye|BunnySlippers|ca\-crawler|CCBot|Cegbfeieh|CheeseBot|CherryPicker|CopyRightCheck|cosmos|Crescent|discobot|DittoSpyder|DOC|DotBot|Download Ninja|EasouSpider|EmailCollector|EmailSiphon|EmailWolf|EroCrawler|Exabot|ExtractorPro|Fasterfox|FeedBooster|Foobot|Genieo|grub\-client|Harvest|hloader|httplib|HTTrack|humanlinks|ieautodiscovery|InfoNaviRobot|IstellaBot|Java/1\.|JennyBot|k2spider|Kenjin Spider|Keyword Density/0\.9|larbin|LexiBot|libWeb|libwww|LinkextractorPro|linko|LinkScan/8\.1a Unix|LinkWalker|LNSpiderguy|lwp\-trivial|magpie|Mata Hari|MaxPointCrawler|MegaIndex|Microsoft URL Control|MIIxpc|Mippin|Missigua Locator|Mister PiX|MJ12bot|moget|MSIECrawler|NetAnts|NICErsPRO|Niki\-Bot|NPBot|Nutch|Offline Explorer|Openfind|panscient\.com|PHP/5\.\{|ProPowerBot/2\.14|ProWebWalker|Python\-urllib|QueryN Metasearch|RepoMonkey|RMA|SemrushBot|SeznamBot|SISTRIX|sitecheck\.Internetseer\.com|SiteSnagger|SnapPreviewBot|Sogou|SpankBot|spanner|spbot|Spinn3r|suzuran|Szukacz/1\.4|Teleport|Telesoft|The Intraformant|TheNomad|TightTwatBot|Titan|toCrawl/UrlDispatcher|True_Robot|turingos|TurnitinBot|UbiCrawler|UnisterBot|URLy Warning|VCI|WBSearchBot|Web Downloader/6\.9|Web Image Collector|WebAuto|WebBandit|WebCopier|WebEnhancer|WebmasterWorldForumBot|WebReaper|WebSauger|Website Quester|Webster Pro|WebStripper|WebZip|Wotbox|wsr\-agent|WWW\-Collector\-E|Xenu|yandex|Zao|Zeus|ZyBORG|coccoc|Incutio|lmspider|memoryBot|SemrushBot|serf|Unknown|uptime files" bad_bot #SetEnvIfNoCase Referer "Abonti|aggregator|AhrefsBot|asterias|BDCbot|BLEXBot|BuiltBotTough|Bullseye|BunnySlippers|ca\-crawler|CCBot|Cegbfeieh|CheeseBot|CherryPicker|CopyRightCheck|cosmos|Crescent|discobot|DittoSpyder|DOC|DotBot|Download Ninja|EasouSpider|EmailCollector|EmailSiphon|EmailWolf|EroCrawler|Exabot|ExtractorPro|Fasterfox|FeedBooster|Foobot|Genieo|grub\-client|Harvest|hloader|httplib|HTTrack|humanlinks|ieautodiscovery|InfoNaviRobot|IstellaBot|Java/1\.|JennyBot|k2spider|Kenjin Spider|Keyword Density/0\.9|larbin|LexiBot|libWeb|libwww|LinkextractorPro|linko|LinkScan/8\.1a Unix|LinkWalker|LNSpiderguy|lwp\-trivial|magpie|Mata Hari|MaxPointCrawler|MegaIndex|Microsoft URL Control|MIIxpc|Mippin|Missigua Locator|Mister PiX|MJ12bot|moget|MSIECrawler|NetAnts|NICErsPRO|Niki\-Bot|NPBot|Nutch|Offline Explorer|Openfind|panscient\.com|PHP/5\.\{|ProPowerBot/2\.14|ProWebWalker|Python\-urllib|QueryN Metasearch|RepoMonkey|RMA|SemrushBot|SeznamBot|SISTRIX|sitecheck\.Internetseer\.com|SiteSnagger|SnapPreviewBot|Sogou|SpankBot|spanner|spbot|Spinn3r|suzuran|Szukacz/1\.4|Teleport|Telesoft|The Intraformant|TheNomad|TightTwatBot|Titan|toCrawl/UrlDispatcher|True_Robot|turingos|TurnitinBot|UbiCrawler|UnisterBot|URLy Warning|VCI|WBSearchBot|Web Downloader/6\.9|Web Image Collector|WebAuto|WebBandit|WebCopier|WebEnhancer|WebmasterWorldForumBot|WebReaper|WebSauger|Website Quester|Webster Pro|WebStripper|WebZip|Wotbox|wsr\-agent|WWW\-Collector\-E|Xenu|yandex|Zao|Zeus|ZyBORG|coccoc|Incutio|lmspider|memoryBot|SemrushBot|serf|Unknown|uptime files" bad_bot #Deny from env=bad_bot # END Bad Bot Blocker

Запрещаем просмотр директории

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

1 2 # directory browsing Options All –Indexes

# directory browsing Options All –Indexes

Защита админки в WordPress

Если у вас есть желание создать двухуровневый доступ для входа в панель администратора Вордпресс, тогда нужно проделать некоторые манипуляции:
Зайти на сайт htaccesstools.com/htpasswd-generator, откроется следующее окно в котором нужно ввести имя пользователя, а во вторую строчку ввести пароль(только сложный). Не вводите простые пароли типа 12345, толку от них никакого. Далее нажмите на кнопку Create .htpasswd и сохраните файл на свой компьютер.

Размещаем данный файл в корне своего сайта. Конечно это не самое лучшее место, так как это место более открыто. НО я думаю для тренировки этого хватит, а далее вы уже переместите его в любую другую директорию (не забыв указать правильный путь к файлу.htpasswd).

Потом сохраните следующий код в корневом файле htaccess.

разместить этот файл в корне вашего сайта, потом перейти на него..php

Если вы сделали все как надо, тогда при входе в админку вам выдаст приглашение для ввода имени и пароля

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

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

РАСШИРЕННАЯ НАСТРОЙКА ФАЙЛА htaccess

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

Перенаправление страниц ошибок.

Предлагаю начать с подмены страницы ошибок. Это бывает тогда, когда посетитель открывает ошибочную страницу и его перебрасывает на страницу ошибки, но многие знают ошибку 404, а бывают еще 400, 401, 403, 500, которые обозначают разные ошибки. Так вот, когда перебрасывают посетителя на такую страницу, то такой страницы может и не быть, а попросту открывается страница вашего провайдера, после открытия которой пользователь закрывает страницу и вы теряете данного посетителя.

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

1 2 3 4 5 6 ErrorDocument 400 /errors/br.html ErrorDocument 401 /errors/aureq.html ErrorDocument 403 /errors/fb.html ErrorDocument 404 /errors/404.html ErrorDocument 500 /errors/serv.html #Замените /errors/*.html указание пути к странице с ошибки

ErrorDocument 400 /errors/br.html ErrorDocument 401 /errors/aureq.html ErrorDocument 403 /errors/fb.html ErrorDocument 404 /errors/404.html ErrorDocument 500 /errors/serv.html #Замените /errors/*.html указание пути к странице с ошибки

Перенаправление по 301, 302 ошибкам.

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

Options +FollowSymLinks RewriteEngine on RewriteRule (.*)

Блокирование открытия картинок с вашего сайта

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

RewriteEngine On RewriteCond %{HTTP_REFERER} !^http://(.+\.)?ваш-урл\.com/ RewriteCond %{HTTP_REFERER} !^$ #Нужно изменить путь к своей картинке. RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/noHL.jpg [L]

Склеиваем зеркала сайтов

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

RewriteCond %{THE_REQUEST} ^{3,9}\ /index\.html\ HTTP/ RewriteRule ^index\.html$ http://вашсайт.ru RewriteCond %{THE_REQUEST} ^{3,9}\ /index\.php\ HTTP/ RewriteRule ^index\.php$ http://вашсайт.ru

Кешируем браузер у клиента

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

1 2 3 4 5 6 7 8 9 10 11 12 Header append Cache-Control "private" 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"

Header append Cache-Control "private" 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"

Указание кодировки

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

Разрешение запуска PHP внутри Javascript.

Бывают моменты, когда код внутри скрипта запускает какую-нибудь функцию.

1 2 3 4 5 AddType application/x-httpd-php .js AddHandler x-httpd-php5 .js SetHandler application/x-httpd-php

AddType application/x-httpd-php .js AddHandler x-httpd-php5 .js SetHandler application/x-httpd-php

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

Если у вас есть вопросы, то пишите в комментариях у кого что и как работает или не работает.

Удачной вам правильной настройки htaccess!

Похожие записи

andew

2015-02-19T11:30:28+00:00

2017-02-16T05:30:00+00:00

12697

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

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

Делается это разрешение при помощи следующего блока кода:

AllowOverride All #Другие директивы...

Здесь в теге указывается физический путь на сервере до корня вашего сайта, и внутри тега указывается директива AllowOverride. Эта директива может быть установлена в None, чтобы сервер не читал файл.htaccess. Если она установлена в All - сервер будет допускать все директивы.htaccess файла. Значение по умолчанию: AllowOverride All.

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

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

Для чего мы можем использовать.htaccess файл . Вариантов здесь немало, вот самые распространенные из них:
1.Для управления разрешениями на доступы к каталогам сайта (запаролить директорию, запретить доступ к файлам определенного формата, или доступ к сайту в определенный промежуток времени, запретить или открыть доступ с определенных IP адресов, управлять роботами поисковиков)
2.Для перезаписи текущего URL на новый в зависимости от условий ()
3.Для явного указания кодировки сайта.
4.Для разрешения или запрета просмотра файлов сайта
5.Для защиты от хотлинка
6.Для выполнения ридирктов
7.Для задания своих страниц ошибок
8.Для переопределения индексного файла
9…. и многое другое.

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

# .htaccess начало шаблона # Установка временной зоны SetEnv TZ Europe/Moscow # Установим принудительно кодировку страниц сайта AddDefaultCharset UTF-8 # Зададим index файл который будет # отдаваться если запрошенный не найден DirectoryIndex index.php index.html # Запретим пользователям просматривать файлы директории Options -Indexes # Разрешим следовать за символическими связями в этом каталоге Options +FollowSymLinks # Разрешение доступа только для указанных IP Order Deny,Allow Deny from all Allow from x.x.x.x # Или запрет доступа по IP Order allow,deny deny from x.x.x.x deny from x.x.x.x allow from all # Запретить всем, то только # одну эту строку указать Deny from all # Закрыть доступ к вложенной директории относительно текущего файла # можно так, или положив туда отдельный.htaccess файл Order Deny,Allow Deny from All # Закрыть директорию паролем AuthType Basic AuthName "Enter a password" #путь до файла с паролями и пользователями AuthUserFile /full/path/to/.htpasswd require valid-user # или закрыть вложенную директорию паролем AuthType Basic AuthName "Enter a password" #путь до файла с паролями и пользователями () AuthUserFile /full/path/to/.htpasswd require valid-user # Запрет на доступ для файла.htpasswd # для всех посетителей кроме разрешенных IP Order Deny,Allow Deny from all Allow from x.x.x.x, x.x.x.xx # Блок если нужно отключить обработку PHP # можно и для задать php_value engine off php_value engine off # # Блок изменение настроек PHP # некоторые директивы зависят от версии PHP #php_flag register_globals off #php_value memory_limit 16M #for files uploading - if needed #php_value max_execution_time 500 #php_value max_input_time 500 #php_value upload_max_filesize 30M #php_value post_max_size 30M #php_flag display_errors off #Настройка PHP для загрузки больших файлов до 256M php_value memory_limit 256M php_value upload_max_filesize 256M php_value post_max_size 256M # # Перезапись URL RewriteEngine On # установить корневой URL как / RewriteBase / #Все запросы с HTTP на HTTPS RewriteCond %{HTTPS} =off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} #Только для указанных каталогов все запросы с http на https redirect RewriteCond %{HTTPS} =off RewriteCond %{REQUEST_URI} /(admin|secret)/ RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} # 301 Редирект как принудительная #постановка замыкающего слеша #RewriteCond %{REQUEST_URI} /+[^\.]+$ #RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ # # 301 Редирект c www.site.ru на site.ru # как удаление www RewriteCond %{HTTP_HOST} ^www\.site\.ru RewriteRule ^(.*)$ http://site.ru/$1 # #301 Универсальный редирект с домена www. на без www. RewriteCond %{HTTP_HOST} ^www\.(.*) RewriteRule ^(.*)$ http://%1/$1 #301 Универсальный редирект с домена без www. на www. RewriteCond %{HTTP_HOST} ^(.*)$ RewriteCond %{HTTP_HOST} !^www\. RewriteRule ^(.*)$ http://www.%1/$1 # 301 Редирект с указанных доменов на основной RewriteCond %{HTTP_HOST} ^www.domen.net$ RewriteCond %{HTTP_HOST} ^domain.net$ RewriteCond %{HTTP_HOST} ^www.domain.net$ RewriteRule ^(.*)$ http://domain.net/$1 # #Редирект с преобразованием GET параметров RewriteCond %{QUERY_STRING} do=page RewriteCond %{QUERY_STRING} id=(\d+) RewriteRule .* /page/%1/? # Внутреннее пере направление на index.php для CMS # Если запрошены не существующие файл или директория # То перенаправлять запрос на index.php RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] # # или еще вариант внутреннего пере направления на index.php RewriteCond $1 !^(index\.php|images|robots\.txt|public) RewriteCond %{REQUEST_URI} !\.(cssіjsіjpgіgifіpng)$ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?/$1 # или как: RewriteRule ^(.*)$ index.php [L] # #Еще вариант, для тех у кого не WordPress и кто хочет избавиться #от ненужных запросов (боты и т.п.) к темам, к админки и каталогам WordPress вида #где, что не файл и не директория, и не начинается с /wp-, #то делаем внутренний redirect на index.php RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d #если у вас не WordPress добавим это и также блок после этого RewriteCond %{REQUEST_URI} !^/wp- RewriteRule . /index.php [L] #если у вас не WordPress то всем кто ломиться в /wp-... #отдадим 410 Gone status - рекомендация забыть этот URL #RewriteRule "oldproduct" "-" #общий пример RewriteCond %{REQUEST_URI} ^/wp- RewriteRule . - # Зашита от хотлинка RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://site\.ru/ RewriteCond %{HTTP_REFERER} !^https://site\.ru/ RewriteCond %{HTTP_REFERER} !^http://www\.site\.ru/ RewriteCond %{HTTP_REFERER} !^https://www\.site\.ru/ RewriteRule \.(jpeg|png|bmp|gif|jpg|js|css)$ - [F] # # Еще вариант антихотлинка ресурсов (картинок) RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://(.+\.)?server\.ru/ RewriteCond %{HTTP_REFERER} !^https://(.+\.)?server\.ru/ RewriteCond %{REQUEST_URI} !null\.gif$ # Перенаправим на картинку заглушку dummy.gif RewriteRule \.(jpg|jpeg|gif|bmp|png)$ http://server.ru/dummy.gif [L] # Еще вариант антихотлинка ресурсов (картинок) RewriteCond %{HTTP_REFERER} !^$ #Замените?mysite\.com/ на адрес вашего блога RewriteCond %{HTTP_REFERER} !^http://(.+\.)?mysite\.com/ RewriteCond %{HTTP_REFERER} !^$ #Замените /images/nohotlink.jpg на ваше изображение с запрещением хотлинка RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpg [L] # Еще вариант антихотлинка ресурсов (картинок) RewriteCond %{HTTP_REFERER} !^http://(.+\.)?mysite\.com/ RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !google. RewriteCond %{HTTP_REFERER} !yandex. RewriteCond %{HTTP_REFERER} !search?q=cache RewriteCond %{HTTP_REFERER} !msn. RewriteCond %{HTTP_REFERER} !yahoo. RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpe [L] # # Вывод 404 ошибки если выключен mod_rewrite ErrorDocument 404 /index.php # Зададим свои страницы для ошибок ErrorDocument 404 /err_404.html ErrorDocument 403 /err_403.html # # Блок кода редиректа на мобильную версию сайта # Как вариант привожу здесь, больше для примера RewriteEngine on # Проверить строку UserAgent браузера RewriteCond %{HTTP_USER_AGENT} acs RewriteCond %{HTTP_USER_AGENT} alav RewriteCond %{HTTP_USER_AGENT} alca RewriteCond %{HTTP_USER_AGENT} amoi RewriteCond %{HTTP_USER_AGENT} audi RewriteCond %{HTTP_USER_AGENT} aste RewriteCond %{HTTP_USER_AGENT} avan RewriteCond %{HTTP_USER_AGENT} benq RewriteCond %{HTTP_USER_AGENT} bird RewriteCond %{HTTP_USER_AGENT} blac RewriteCond %{HTTP_USER_AGENT} blaz RewriteCond %{HTTP_USER_AGENT} brew RewriteCond %{HTTP_USER_AGENT} cell RewriteCond %{HTTP_USER_AGENT} cldc RewriteCond %{HTTP_USER_AGENT} cmd- RewriteCond %{HTTP_USER_AGENT} dang RewriteCond %{HTTP_USER_AGENT} doco RewriteCond %{HTTP_USER_AGENT} eric RewriteCond %{HTTP_USER_AGENT} hipt RewriteCond %{HTTP_USER_AGENT} inno RewriteCond %{HTTP_USER_AGENT} ipaq RewriteCond %{HTTP_USER_AGENT} java RewriteCond %{HTTP_USER_AGENT} jigs RewriteCond %{HTTP_USER_AGENT} kddi RewriteCond %{HTTP_USER_AGENT} keji RewriteCond %{HTTP_USER_AGENT} leno RewriteCond %{HTTP_USER_AGENT} lg-c RewriteCond %{HTTP_USER_AGENT} lg-d RewriteCond %{HTTP_USER_AGENT} lg-g RewriteCond %{HTTP_USER_AGENT} lge- RewriteCond %{HTTP_USER_AGENT} maui RewriteCond %{HTTP_USER_AGENT} maxo RewriteCond %{HTTP_USER_AGENT} midp RewriteCond %{HTTP_USER_AGENT} mits RewriteCond %{HTTP_USER_AGENT} mmef RewriteCond %{HTTP_USER_AGENT} mobi RewriteCond %{HTTP_USER_AGENT} mot- RewriteCond %{HTTP_USER_AGENT} moto RewriteCond %{HTTP_USER_AGENT} mwbp RewriteCond %{HTTP_USER_AGENT} nec- RewriteCond %{HTTP_USER_AGENT} newt RewriteCond %{HTTP_USER_AGENT} noki RewriteCond %{HTTP_USER_AGENT} opwv RewriteCond %{HTTP_USER_AGENT} palm RewriteCond %{HTTP_USER_AGENT} pana RewriteCond %{HTTP_USER_AGENT} pant RewriteCond %{HTTP_USER_AGENT} pdxg RewriteCond %{HTTP_USER_AGENT} phil RewriteCond %{HTTP_USER_AGENT} play RewriteCond %{HTTP_USER_AGENT} pluc RewriteCond %{HTTP_USER_AGENT} port RewriteCond %{HTTP_USER_AGENT} prox RewriteCond %{HTTP_USER_AGENT} qtek RewriteCond %{HTTP_USER_AGENT} qwap RewriteCond %{HTTP_USER_AGENT} sage RewriteCond %{HTTP_USER_AGENT} sams RewriteCond %{HTTP_USER_AGENT} sany RewriteCond %{HTTP_USER_AGENT} sch- RewriteCond %{HTTP_USER_AGENT} sec- RewriteCond %{HTTP_USER_AGENT} send RewriteCond %{HTTP_USER_AGENT} seri RewriteCond %{HTTP_USER_AGENT} sgh- RewriteCond %{HTTP_USER_AGENT} shar RewriteCond %{HTTP_USER_AGENT} sie- RewriteCond %{HTTP_USER_AGENT} siem RewriteCond %{HTTP_USER_AGENT} smal RewriteCond %{HTTP_USER_AGENT} smar RewriteCond %{HTTP_USER_AGENT} sony RewriteCond %{HTTP_USER_AGENT} sph- RewriteCond %{HTTP_USER_AGENT} symb RewriteCond %{HTTP_USER_AGENT} t-mo RewriteCond %{HTTP_USER_AGENT} teli RewriteCond %{HTTP_USER_AGENT} tim- RewriteCond %{HTTP_USER_AGENT} tosh RewriteCond %{HTTP_USER_AGENT} tsm- RewriteCond %{HTTP_USER_AGENT} upg1 RewriteCond %{HTTP_USER_AGENT} upsi RewriteCond %{HTTP_USER_AGENT} vk-v RewriteCond %{HTTP_USER_AGENT} voda RewriteCond %{HTTP_USER_AGENT} w3cs RewriteCond %{HTTP_USER_AGENT} wap- RewriteCond %{HTTP_USER_AGENT} wapa RewriteCond %{HTTP_USER_AGENT} wapi RewriteCond %{HTTP_USER_AGENT} wapp RewriteCond %{HTTP_USER_AGENT} wapr RewriteCond %{HTTP_USER_AGENT} webc RewriteCond %{HTTP_USER_AGENT} winw RewriteCond %{HTTP_USER_AGENT} winw RewriteCond %{HTTP_USER_AGENT} xda RewriteCond %{HTTP_USER_AGENT} xda- RewriteCond %{HTTP_USER_AGENT} up.browser RewriteCond %{HTTP_USER_AGENT} up.link RewriteCond %{HTTP_USER_AGENT} windows.ce RewriteCond %{HTTP_USER_AGENT} iemobile RewriteCond %{HTTP_USER_AGENT} mini RewriteCond %{HTTP_USER_AGENT} mmp RewriteCond %{HTTP_USER_AGENT} symbian RewriteCond %{HTTP_USER_AGENT} midp RewriteCond %{HTTP_USER_AGENT} wap RewriteCond %{HTTP_USER_AGENT} phone RewriteCond %{HTTP_USER_AGENT} ipad RewriteCond %{HTTP_USER_AGENT} iphone RewriteCond %{HTTP_USER_AGENT} iPad RewriteCond %{HTTP_USER_AGENT} iPhone RewriteCond %{HTTP_USER_AGENT} ipod RewriteCond %{HTTP_USER_AGENT} iPod RewriteCond %{HTTP_USER_AGENT} pocket RewriteCond %{HTTP_USER_AGENT} mobile RewriteCond %{HTTP_USER_AGENT} android RewriteCond %{HTTP_USER_AGENT} Android RewriteCond %{HTTP_USER_AGENT} pda RewriteCond %{HTTP_USER_AGENT} PPC RewriteCond %{HTTP_USER_AGENT} Series60 RewriteCond %{HTTP_USER_AGENT} Opera.Mini RewriteCond %{HTTP_USER_AGENT} Moby RewriteCond %{HTTP_USER_AGENT} Mobi # Проверить служебные заголовки, отсылаемые браузером RewriteCond %{HTTP_ACCEPT} "text/vnd.wap.wml" RewriteCond %{HTTP_ACCEPT} "application/vnd.wap.xhtml+xml" # Проверить исключения RewriteCond %{HTTP_USER_AGENT} !windows.nt RewriteCond %{HTTP_USER_AGENT} !bsd RewriteCond %{HTTP_USER_AGENT} !x11 RewriteCond %{HTTP_USER_AGENT} !unix RewriteCond %{HTTP_USER_AGENT} !macos RewriteCond %{HTTP_USER_AGENT} !macintosh RewriteCond %{HTTP_USER_AGENT} !playstation RewriteCond %{HTTP_USER_AGENT} !google RewriteCond %{HTTP_USER_AGENT} !yandex RewriteCond %{HTTP_USER_AGENT} !bot RewriteCond %{HTTP_USER_AGENT} !libwww RewriteCond %{HTTP_USER_AGENT} !msn RewriteCond %{HTTP_USER_AGENT} !america RewriteCond %{HTTP_USER_AGENT} !avant RewriteCond %{HTTP_USER_AGENT} !download RewriteCond %{HTTP_USER_AGENT} !fdm RewriteCond %{HTTP_USER_AGENT} !maui RewriteCond %{HTTP_USER_AGENT} !webmoney RewriteCond %{HTTP_USER_AGENT} !windows-media-player # При выполнении условий переадресация на мобильную версию сайта RewriteRule ^(.*)$ http://mobile.version.of.site.ru #Универсальный 302 редирект на мобильную версию сайта RewriteEngine on #Универсальный редирект на мобильную версию сайта RewriteCond %{HTTP_HOST} ^(.*)$ RewriteCond %{HTTP_USER_AGENT} (?i:midp|samsung|nokia|j2me|avant|docomo|novarra|palmos|palmsource|opwv|chtml|pda|mmp|blackberry|mib|symbian|wireless|nokia|hand|mobi|phone|cdm|upb|audio|SIE|SEC|samsung|HTC|mot-|mitsu|sagem|sony|alcatel|lg|eric|vx|NEC|philips|mmm|xx|panasonic|sharp|wap|sch|rover|pocket|benq|java|pt|pg|vox|amoi|bird|compal|kg|voda|sany|kdd|dbt|sendo|sgh|gradi|jb|dddi|moto|iphone|android) RewriteRule ^$ http://m.%1 # .htaccess конец шаблона

Расшифрую некоторые флаги из директив:

  • RewriteCond ... - NC значит регистр нечувствительное сравнение выполнять
  • RewriteCond ... - NC см. выше, OR - значит объединять RewriteCond через OR, по умолчанию если ничего не указана то RewriteCond объединяются через AND оператор.
  • RewriteRule ... [L] - L значит закончить (остановить обработку) на этом RewriteRule правиле любые дальнейшие преобразования URL , т.е. последующие RewriteRule не выполнять.
  • RewriteRule ... - L см. выше, R=302 значит выполнить редирект с кодом 302 на преобразованный URL
  • RewriteRule ... - L и R см. выше, QSA - при преобразовании URL выполнять при стыковку заданных частей, а не замену.
  • RewriteRule ... [F] - F, значит отказать в выдачи результата по этому URL кодом 403 Forbidden .
  • RewriteRule . - G|Gone - [G] flag значит отдать код 410 Gone status - рекомендация забыть этот URL

AuthUserFile - задает путь к файлу с паролями для http авторизации пользователя. Путь может быть абсолютный от корня файловой системы Linux сервера или относительный от ServerRoot apache. В Ubuntu ServerRoot "/etc/apache2" по умолчанию. При задании относительного пути от ServerRoot apache начальный слеш в пути не указывается, иначе путь будет восприниматься как абсолютный от корня Linux. Также, если путь содержит недопустимые символы и пробелы его нужно заключать в кавычки, это общее правило.

Order, Deny, Allow

Теперь еще раз, но уже более детально, хотелось бы вернуться к директивам управление доступом: Order , Deny , Allow и более детально описать ее синтаксис и логику.

Директивы Allow , Deny , Order модуля mod_access_compat нежелательны к использованию и считаются устаревшими, хотя и поддерживаются еще в версиях Apache 2.3 и 2.4 . В следующих версиях они будут удалены. Вместо них, начиная с версии Apache 2.3 , этот функционал реализуется директивой Require , которая позволяет более гибко настраивать доступы, чем устаревшие директивы. Детали смотрите в статье , которая подробно описывает директивы Require , Allow , Deny , Order с примерами их использования.

Директива Order синтаксис: Order или

По умолчанию директива Order имеет порядок: Deny,Allow . Обратите внимание, что Deny,Allow пишутся без пробела.

В зависимости от того в каком порядке указаны директивы Deny,Allow или Allow,Deny меняется логика работы.

Если Deny,Allow то запрещается доступ со всех IP кроме указанных, если Allow,Deny разрешается доступ со всех IP кроме оговоренных. Далее идут секции описания для доступа и запрета. Ключевое слово all означает со всех IP.

Например, что бы запретить (блокировать) доступ с IP x.x.x.x и x.x.x.xx и разрешить доступ всем остальным необходимо добавить в.htaccess следующий код:

# Разрешить ВСЕМ кроме указанных IP
Order Allow,Deny
Allow from all
Deny from x.x.x.x x.x.x.xx

Обратите внимание что IP записаны через пробел. Можно также указать IP как IP/маска.

Для обратной ситуации, что бы запретить доступ со всех IP кроме x.x.x.x и x.x.x.xx нам необходимо добавить в.htaccess следующий код:

# Запретить ВСЕМ кроме указанных IP
Order Deny,Allow
Deny from all
Allow from x.x.x.x x.x.x.xx

Запрет или разрешение можно указывать и на отдельный файл или группы файлов. Например, что бы запретить доступ всех кроме IP x.x.x.x к файлу passwd.html, который расположен в текущей директории.

# Запретить файл passwd.html ВСЕМ кроме указанных IP

Order Deny,Allow
Deny from all
Allow from x.x.x.x

Аналогично можно запретить или разрешить доступ к определенной группе файлов описав их через регулярное выражение. Например, к файлам с расширением ".key":

#Запретить файлы *.key ВСЕМ кроме указанных IP

Order Deny,Allow
Deny from all
Allow from x.x.x.x

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

Мы решили объединить две темы, "как сделать файл htaccess" и что такое "htaccess", где он располагается, зачем нужен и общие понятия!

Хоть тема htaccess - это не начальный уровень изучения, но мы потихоньку начинаем углубляться и htaccess - это неотъемлемая часть сайта!

Что такое htaccess

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

Определение что такое htaccess

.htaccess (/"eɪtʃtiːæk.sɛs/ от англ. hypertext access) - файл дополнительной конфигурации веб-сервера Apache, а также подобных ему серверов. Позволяет задавать большое количество дополнительных параметров и разрешений для работы веб-сервера в отдельных каталогах (папках), таких как управляемый доступ к каталогам, переназначение типов файлов и т.д., без изменения главного конфигурационного файла.

Где находится файл htaccess

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

Самый простой пример использования htaccess

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

Для обоих версий выполняются правила

1. AddHandler fcgid-script .php .html .htm

Эта строка - SSI (Server Side Includes - включения на стороне сервера) - позволяющий включить в страницу информацию, недоступную средствами HTML, такую как вывод программ например PHP.

А по русски!?

Все файлы, которые вы открываете на нашем сайте имеют расширение ".html" - это не виртуальное расширение, а физическое, т.е. эта информация хранится в реальных файлах! Но если вы поместите любой код php в данный файл, то он выведется в виде простого текста и никак не выполнится! Для изменения этого и нужна данная строка... Как нибудь и об этом мы напишем, когда дойдем...

2. Может быть верхний пример довольно сложен для понимания, есть ли вариант попроще!?

Опять обратимся к нашему сайту. Если вы обратите внимание, что все новые страницы имеют общую папку "page" и все файлы, и как бы странно это не звучало, но такой папки - физически не существует...

Как в кино - видишь ложку!? Нет!? - А она существует!

RewriteRule ^page(.*) index.html [L]

Как сделать файл htaccess

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

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


Хм… только я хотел его переименовать, а он мне выдает:


Да… в windows 7 это проходило без проблем…

Ну, что же, мы пойдем другим путем!

Вариант №2.

Открываем созданный файл в блокноте, либо просто открываем текстовый блокнот и в нём указываем сохранение нашего файла htaccess в нужную директорию.

Имя файла - .htaccess

Тип файла – все файлы.


Всё – наш файл.htaccess – создан.


Где находится файл htaccess?

Он может находится где угодно в зависимости от необходимости, но если вам нужно, чтобы файл отвечал за все настройки сайта, то он должен находится в той же директории, что и файл index.html, ну или index.php.

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

Как создать файл.htaccess

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

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

  • 1. Открываем текстовый редактор или тот который используете для верстки, советую Notepad++ , если же он Вам не знаком, то обычный Блокнот .
  • 2. Ничего в нем не пишем и просто сразу сохраняем нажав на пункт меню "Файл" , выбрать "Сохранить как" .
  • 3. В открывшемся окне, там где стоит выбор "Тип файла" выбрать "Все файлы" или "All files"
  • 4. В строке, где нужно указать имя, нужно прописать .htaccess
  • Нажать на кнопку"Сохранить" , чтобы завершить создание.

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

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

Как указать кодировку сайта в.htaccess

Если Вам нужно указать кодировку в.htaccess, то Вам нужно открыть его и добавить всего лишь одну строку кода, который укажет кодировку. Для UTF-8 :

AddDefaultCharset UTF-8

для windows-1251 :

AddDefaultCharset CP1251

Как запретить доступ к определенным файлам или самому.htaccess

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

order allow,deny deny from all

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

Order Allow,Deny Deny from all

Как запретить просмотр директорий в.htaccess

Если у Вас возникла надобность в том, чтобы запретить посетителям просматривать структуру вашего сайта, то добавьте следующий код:

Options -Indexes

Если, Вам наоборот нужно открыть доступ к просмотру директорий, то поможет следующий код.

Options All +Indexes

Как ускорить время загрузки сайта за счет сжатия файлов

Можно сжимать любые файлы, например, для сжатия HTML-файлов нужно добавить вот такую вот строку

AddOutputFilterByType DEFLATE text/html

Если же это например текстовый файл, то надо так:

AddOutputFilterByType DEFLATE text/plain

Для JavaScript:

AddOutputFilterByType DEFLATE application/javascript

Есть код, который одновременно сожмет все javaScript, HTML и CSS файлы при помощи GZIP. Это вот такой вот код:

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

Как запретить вставлять изображения со сторонних ресурсов

Если по какой-то причине, у Вас возникла потребность в том, чтобы запретить пользователям своего сайта добавлять какие бы то не было изображения, то просто, добавьте такой вот код:

RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourdomain.com RewriteRule \.(jpg|jpeg|png|gif)$ -

yourdomain.com - замените на домен Вашего сайта, чтобы скрипт работал.

Как заблокировать посетителей, которые пришли из определенного сайта.

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

RewriteEngine on RewriteCond %{HTTP_REFERER} site1.com RewriteCond %{HTTP_REFERER} site2.com RewriteRule .* - [F]

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

Кэширование файлов в.htaccess

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

Header set Cache-Control "max-age=2592000"

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

Header unset Cache-Control

Как изменить главную страницу в.htaccess

Стандартной страницей загрузки являются страницы - index.html, index.php, index.htm .

DirectoryIndex newpage.html

Просто укажите новую страницу, вместо newpage.html .

Как заблокировать доступ к сайту по IP адресу

Как убрать index.php, index.html из URL адреса

Этот способ тоже описан в статье -

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

На этом все, спасибо за внимание. 🙂