Htaccess комментарии: Как в .htaccess закомментировать строку? – 19 полезных возможностей файла .htaccess / PromoPult corporate blog / Habr

Содержание

Шпаргалка по .htaccess – База знаний Timeweb Community

d8d10cf2d3c89b6f3b59fe832db6561c.jpg

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

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

.htaccess позволяет создать собственную конфигурацию управлением сервера Апач в директориях или настройках хостинга.

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

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

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

Запрет доступа для определенных

IP-адресов или диапазонов IP-адресов

Запрет доступа с IP-адреса 123.123.123.123.


Order Deny,Allow
Deny from 123.123.123.123

Если не указывать последние цифры адреса, то запрет будет распространяться на весь диапазон 123.123.123.0 — 123.123.123.255.


Order Deny,Allow
Deny from 123.123.123

Разрешаем доступ только с определенных IP-адресов


Order Deny,Allow
Deny from all
Allow from 123.123.123.123

Принудительное задание кодировки

Иногда требуется очистка кэша браузера.

Отмена перекодировки сервером

Создание собственных страниц с сообщениями об ошибках

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


ErrorDocument 404 http://site.ru/error/404.html
ErrorDocument 403 http:// site ru/error/403.html
ErrorDocument 401 http:// site.ru/error/401.html
ErrorDocument 500 http:// site.ru/error/500.html

Строка ErrorDocument 404 http://site.ru/error/404.html указывает, что при ошибке 404 будет показан файл 404.html, который должен находиться в корне директории сайта. Если файл расположен в другой директории, измените путь к файлу или ссылке.

Редиректы

Редирект на .html

Пример, редирект с c site.ru/blog на site.ru/blog.html.


RewriteCond %{REQUEST_URI} (.*/[^/.]+)($|\?)
RewriteRule .* %1.html [R=301,L]
RewriteRule ^(.*)/$ /$1.html [R=301,L]

Редирект на страницу без слеша в конце адреса

Пример, редирект с c site.ru/blog/ на site.ru/blog.


RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ /$1 [R=301,L]

Редирект на страницу со слешем в конце адреса


RewriteCond %{REQUEST_URI} (.*/[^/.]+)($|\?)
RewriteRule .* %1/ [R=301,L]

Редирект на страницу без index.php в адресе


RewriteRule ^index.php/(.*)$ http://mysite.ru/$1 [R=permanent,L]

Редирект на страницу без index.php в конце адреса


RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://site.ru/ [R=301,L]

Редирект с www на без www


RewriteCond %{HTTP_HOST} ^www\.site\.ru$ [NC]
RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]

Редирект без www на www


RewriteCond %{HTTP_HOST} ^site.ru$ [NC]
RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]

Склейка доменов

Пример, у вас несколько доменов, но посетитель должен переправляться на один.


RewriteCond %{HTTP_HOST} !^site.ru$
RewriteRule ^(.*) http://site.ru/$1 [R=301,L]

Редирект со старых статических url на новые

Пример редирект со страницы http://site.com.ru/id=21.


RewriteCond %{QUERY_STRING} ^id=21$
RewriteRule ^/page.php$ http://site.ru/news.html [L,R=301]

Защита от хотлинка

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

Вместо site.ru укажите адрес сайта, jpg|jpeg|png|gif — расширение запрещенных изображений, images.jpg – изображение которое будет показываться, если картинка находится не в корне сайта, укажите полный путь.


RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?site.ru [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ images.jpg [NC,R,L]

Защита от брутофорса

Разрешаем доступ к директории administrator только по протоколу HTTP, что отсеет некоторых ботов. Для каждой CMS нужно указать свой адрес, например wp-login, wp-admin и так далее.


RewriteCond %{REQUEST_URI} ^/administrator\.php$
RewriteCond %{THE_REQUEST} HTTP/1\.0
RewriteRule ^(.*)$ - [F,L]

Бытует легенда, что происхождения названия сервера Апач происходит не от названия индейского племени. Когда сервер был еще в самом начале пути, группа энтузиастов небольшие дополнения к коду, патчи (англ – patch), и «a patchy server» превратилось в Апач, а знаменитое перо на логотипе появилось позже.

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

Статья писалась эпизодическими «набегами», так что если увидите ошибку, поправьте.

Мой аккаунт на Marketplace — https://timeweb.com/ru/community/marketplace/bashkov-vladislav, обращайтесь

Простая настройка .htaccess для production / Habr

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

Всегда указываем кодировку. По умолчанию лучше выбирать utf-8.
AddDefaultCharset UTF-8
2. Редирект на один домен

Для SEO оптимизации, желательно, чтобы сайт был размещен только на одном домене. Если у вас несколько доменов ссылаются на один сайт, делаем редиректы на основной домен. Желательно, чтобы он начинался с www.

Сделаем это используя код 301

<IfModule mod_rewrite.c>
    Options +Followsymlinks
    RewriteEngine On

    RewriteCond %{HTTP_HOST} ^example\.com [OR]
    RewriteCond %{HTTP_HOST} ^example2\.com  [OR]
    RewriteCond %{HTTP_HOST} ^www\.example2\.com
    RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]    
</IfModule>
3. Кеширование статических ресурсов

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

Избавимся от этого. Для этого поставим время проверки обновления ресурса на несколько лет вперед, и отключим проверку ETag

<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
Header set Cache-Control "public"
Header set Expires "Fri, 21 Dec 2012 20:00:00 GMT" #Until the end of the world
FileETag None
</FilesMatch>
4. Сжатие текстовых файлов

Текствые файлы можно передавать броузеру в сжатом виде. Укажем необходимые директивы для этого.
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
Выводы

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

24 секрета настройки .htaccess файла

.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

 

htaccess в примерах

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

Файл .htaccess может быть размещён в любом каталоге. Директивы этого файла действуют на все файлы в текущем каталоге и во всех его подкаталогах (если эти директивы не переопределены директивами нижележащих файлов .htaccess).

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

Генератор

.htaccess Generator

1. Запрещаем загрузку файлов с внешних сайтов

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

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

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

2. Блокируем все запросы от нежелательных User Agents

Это правило позволяет заблокировать нежелательные User Agent, которые могут быть потенциально опасными или просто перегружать сервер ненужными запросами.

#Блокируем плохих ботов и роботов
SetEnvIfNoCase user-Agent ^FrontPage [NC,OR]
SetEnvIfNoCase user-Agent ^Java.* [NC,OR]
SetEnvIfNoCase user-Agent ^Microsoft.URL [NC,OR]
SetEnvIfNoCase user-Agent ^MSFrontPage [NC,OR]
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 браузеров, роботов и пауков поисковых машин, веб-каталогов, менеджеров закачек, спам-ботов и плохих ботов можно найти на сайте List of User-Agents.

3. Настраиваем SEO-Friendly 301 Redirect

Если вы перенесли доменное имя (или свой подсайт) или хотите перенаправлять пользователя на определенную страницу (страницы), без санкций со стороны поисковых машин, используйте этот код:

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

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

4. Создаем собственные страницы ошибок

Вам надоел стандартный вид страниц ошибок? Нет проблем — с помощью следующего кода, вы легко можете создать свою страницу и показывать пользователю именно ее:

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

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

5. Создаем черный список IP адресов

Устали от спам-комментариев или определенного пользователя? Просто заблокируйте его IP с помощью следующего кода, добавляемого в .htaccess-файл.

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

Узнать IP адреса комментаторов можно или в логах Apache или с помощью сервисов статистики. У многих CMS есть свои встроенные средства для мониторинга адресов посетителей. Например, в DrupalIP- адреса комментаторов можно увидеть в административной панели — Отчеты.

6. Устанавливаем e-mail адрес по-умолчанию для администратора

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

#Устанавливаем e-mail адрес по-умолчанию для администратора
ServerSignature EMail
SetEnv SERVER_ADMIN [email protected]

Не забудьте заменить [email protected] — своим e-mail адресом.

7. Сжимаем элементы с помощью mod_deflate

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

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

8. Добавляем срок жизни в заголовки

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

#Добавляем срок жизни в заголовки
<filesmatch .(ico|pdf|flv|jpg|jpeg|png|gif|swf)$="">
Header set Expires «Wed, 21 May 2010 20:00:00 GMT»
</filesmatch>

9. Устанавливаем страницы по-умолчанию

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

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

10. Перенаправляем со старого домена — на новый

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

#Перенаправляем со старого домена old.com  — на новый
RewriteEngine On
RewriteRule ^(.*)$ http:

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

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

Обратите внимание, что включение компрессии приведет к большей нагрузке на процессор сервера. Здесь строкаAddOutputFilterByType записывается в одну длинную строчку с двумя нижними (все .. нужно убрать).

12. Удаляем «category» из URL

Для изменения ссылки yourdomain.com/category/blueна yourdomain.com/blue, просто добавьте следующий код в конце вашего .htaccess файла.

#Удаляем category из URL
RewriteRule ^category/(.+)$ http:

Не забудьте изменить www.site.com на ваше доменное имя.

13. Запрещаем просмотр содержимого папки

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

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

14. Перенаправляем свою RSS-ленту на FeedBurner

Покажем как это можно сделать на примере RSS-ленты Drupalна сервис Google Feedburner.

#Перенаправляем RSS-ленту Drupal на FeedBurner
<ifmodule mod_rewrite.c="">
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} !FeedBurner [NC]
RewriteCond %{HTTP_USER_AGENT} !FeedValidator [NC]
RewriteRule ^rss.xml$ http:
</ifmodule>

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

15. Запрещаем комментарии от пользователей без Referrer

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

#Запрещаем комментарии от пользователей без Referrer
RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .comment\/reply\



Не забудьте заменить yourblog.com на доменное имя вашего блога.

16. Убираем расширение файла из URL

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

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

17. Защита от прямых ссылок для изображений через .htaccess

Хотлинк (Hotlink) — вставка прямых ссылок изображений или файлов с одного сайта на другие. Этот прием используется довольно часто, ну например, у вас на сервере не хватает места для хранения картинок и вы пользуетесь каким-либо бесплатным сервисом для хранения файлов изображений, т.е. загружаете картинку, получаете URL и вставляете его на свой сайт.

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

Как не стать бесплатным поставщиком изображений и файлов?

Есть ли защита от этого? Да, есть! Чтобы запретить другим сайтам пользоваться вашим трафиком и/или просто указывать прямые ссылки на ваши файлы (картинки), то добавьте в ваш .htaccessфайл следующие строки:

# Запретить другим сайтам использовать прямые ссылки на ваши картинки
RewriteCond %{HTTP_REFERER} !^$
# Дальше список разрешенных доменов
RewriteCond %{HTTP_REFERER} !^http(s)?:
RewriteCond %{HTTP_REFERER} !^http(s)?:
# IP сайта (домена)
RewriteCond %{HTTP_REFERER} !^http(s)?:
RewriteCond %{HTTP_REFERER} !^http(s)?:
RewriteCond %{HTTP_REFERER} !^http(s)?:
RewriteCond %{HTTP_REFERER} !^http(s)?:
# RewriteCond %{HTTP_REFERER} !^http(s)?:
RewriteCond %{HTTP_REFERER} !search?q=cache [NC]
# Форматы файлов, для которых устанавливается защита
# Выводит ошибку 403
# RewriteRule \.(jpe?g|bmp|gif|png|css|mov|swf|dcr|exe|rar|avi|vob|zip|pdf|txt|doc|flv|mp3|mp4)$ — [NC,F,L]
# или показывает спецрисунок вместо указанного
RewriteRule .*\.(jpe?g|bmp|gif|png)$ files/images/nohotlink.jpg [NC,L]

В итоге все остальные сайты получат ошибку 403 Forbidden (т.е.Доступ запрещен) и ваша пропускная способность больше «не работает на других».

18. ImageCache и защита от хотлинка через .htaccess

Для ImageCache предыдущий пункт работать не будет, поэтому добавляем такие настройки:

SetEnvIfNoCase Referer «^$» local_ref=1
# Allowed domains
# Далее разрешенные домены
SetEnvIfNoCase Referer «^http:
SetEnvIfNoCase Referer «^http:
# File extensions that you want to protect
# Расширения файлов, которые нужно защитить
<FilesMatch "\.(bmp|jpe?g|gif|png)">
Order Allow,Deny
Allow from env=local_ref
</FilesMatch>

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

19. Принудительная постановка замыкающего слеша

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

<IfModule mod_rewrite.c>
 RewriteCond %{REQUEST_URI} /+[^\.]+$
 RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]
 </IfModule>

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

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

RewriteEngine On
#Замените ?mysite\.com/ на адрес вашего блога
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?mysite\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^$
#Замените /images/nohotlink.jpg на ваше изображение с запрещением хотлинка
RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpg [L]

21. Перенаправляем мобильные устройства

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

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/m/.*$
RewriteCond %{HTTP_ACCEPT} "text/vnd.wap.wml|application/vnd.wap.xhtml+xml" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "acs|alav|alca|amoi|audi|aste|avan|benq|bird|blac|blaz|brew|cell|cldc|cmd-" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "dang|doco|eric|hipt|inno|ipaq|java|jigs|kddi|keji|leno|lg-c|lg-d|lg-g|lge-" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "maui|maxo|midp|mits|mmef|mobi|mot-|moto|mwbp|nec-|newt|noki|opwv" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "palm|pana|pant|pdxg|phil|play|pluc|port|prox|qtek|qwap|sage|sams|sany" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "sch-|sec-|send|seri|sgh-|shar|sie-|siem|smal|smar|sony|sph-|symb|t-mo" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "teli|tim-|tosh|tsm-|upg1|upsi|vk-v|voda|w3cs|wap-|wapa|wapi" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "wapp|wapr|webc|winw|winw|xda|xda-" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "up.browser|up.link|windowssce|iemobile|mini|mmp" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "symbian|midp|wap|phone|pocket|mobile|pda|psp" [NC]
#------------- Строка ниже исключает iPad
RewriteCond %{HTTP_USER_AGENT} !^.*iPad.*$
#-------------
RewriteCond %{HTTP_USER_AGENT} !macintosh [NC] 
RewriteRule ^(.*)$ /m/ [L,R=302]

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

По некоторым причинам вам может потребоваться принудительная загрузка файлов определенных типов (например, MP3 или XLS). Нижеприведенный код будет предотвращать чтение таких файлов браузером и принудительно запускать загрузку.

<Files *.xls>
 ForceType application/octet-stream
 Header set Content-Disposition attachment
</Files>
<Files *.eps>
 ForceType application/octet-stream
 Header set Content-Disposition attachment
</Files>

23. Междоменное использование шрифтов для FireFox

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

<FilesMatch "\.(ttf|otf|eot|woff)$">
<IfModule mod_headers.c>
#Замените yourdomain.com на адрес вашего блога
 Header set Access-Control-Allow-Origin "http://yourdomain.com"
</IfModule>
</FilesMatch>

24. Отсекаем спам

Страдаете от спама на вашем блоге WordPress? Конечно, плагин Akismet может оказать существенную помощь, но и файл .htaccess не останется в стороне от борьбы с заразой. Данный код предотвращает непосредственный доступ спам ботов к файлу  wp-comments-post.php, который формирует комментарии на блоге.

# Заменяем yourdomainname на имя вашего домена
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .wp-comments-post\.php*
RewriteCond %{HTTP_REFERER} !.*yourdomainname.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]
</IfModule>

25. Приводим различные фиды к единому формату

Несколько лет назад использовались различные форматы фидов, такие как RSS, Atom или Rdf. В наши дни RSS определенно стал самым используемым. Данный код позволяет перенаправить все форматы фидов в один формат.

# Заменяем URL на адрес своего блога
<IfModule mod_alias.c>
 RedirectMatch 301 /feed/(atom|rdf|rss|rss2)/?$ http://example.com/feed/
 RedirectMatch 301 /comments/feed/(atom|rdf|rss|rss2)/?$ http://example.com/comments/feed/
</IfModule>

26. Конфигурируем сайт для видео HTML5

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

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
AddType video/ogg .ogv
AddType video/ogg .ogg
AddType video/mp4 .mp4
AddType video/webm .webm
AddType application/x-shockwave-flash swf

27. Записываем ошибки PHP в журнал

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

# отключаем вывод ошибок пользователям
php_flag display_startup_errors off
php_flag display_errors off
php_flag html_errors off
# заносим ошибки в журнал
php_flag log_errors on
php_value error_log /location/to/php_error.log

28. Запускаем PHP в файлах JavaScript

При разработке кода JavaScript иногда требуется использовать PHP в файлах .js.  Например, для получения данных из базы.

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

<FilesMatch "\.(js|php)$">
SetHandler application/x-httpd-php
</FilesMatch>

Как бы мне разобраться с htaccess? — Хабр Q&A

Всем доброго времени суток.
Сейчас изучаю серию уроков по созданию движка сайта на php (точнее уже изучил). Суть движка такова: есть файл index.php и по сути через него работают все остальные *.php. В уроках не был разъяснен htaccess. Просто было сказано добавьте на в корень папки с сайтом данный файл с таким кодом и все:
  1. RewriteEngine on
  2. RewriteBase /
  3. Options All -Indexes
  4. RewriteCond %{REQUEST_FILENAME} -s [OR]
  5. RewriteCond %{REQUEST_FILENAME} -l [OR]
  6. RewriteCond %{REQUEST_FILENAME} -d
  7. RewriteRule ^resource/(.*)$ resource/$1 [L]
  8. RewriteRule ^catalog/(.*)$ catalog/$1 [L]
  9. RewriteRule ^.*$ [NC,L]
  10. RewriteRule ^.*$ index.php [NC,L]
  11. AddDefaultCharset UTF-8
  12. AddType ‘text/html; charset=utf-8’ .html .htm .shtml

Но данный код не давал мне покоя и поэтому я решил разобраться с ним. Почитал документацию, статьи. И частично разобрался. И так по порядку, как я понял данный код:
1. Первая строчка я так понял: запускает какой-то мод который будет преобразовывать URL.

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

3. Если нет index.php то каталог на сервере не будет отображаться.

4-6. Условия при которых будет срабатывать правило 7. (Т.е. если полный путь к файлу или сам файл: а) является обычным файлом с ненулевым размером; б) является символической ссылкой; в) является каталогом).
Внимание, вопрос: Когда будет срабатывать правило 7: при выполнении всех трех условий или хотя бы одного. Данный вопрос возник в связи с тем что:

Используйте для комбинирования условий в правилах OR вместо AND.

7. Заменяем resource/{любые символы} на resource/$1 и [L] — заканчиваем преобразования и больше ни чего не преобразовываем.
Внимание, вопрос: Что означает $1

8. Тоже самое что и предыдущее правило только параметры другие, но..
Внимание, вопрос: Почему тут нет никаких условий. Ну и опять $1.

9. Сразу..
Внимание, вопрос: Что вообще тут происходит? Т.е. мы преобразовываем абсолютно любой URL в…. Ничто?! Второго параметра то нет.

10. Тут, мне кажется, правило означает, перенаправление любого запроса на index.php.
Внимание, вопрос: Верно?

11-12. Тут понятно все.

Внимание, главный вопрос: Почему условие есть только у одного правила, и почему это работает?

15 полезных htaccess трюков для улучшения работы веб-сайта

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

1. Защита от хотлинкинга  с .htaccess

Сайты, которые крадут ваш контент могут весьма и весьма раздражать. К тому же они могут повредить рейтинг сайта, так как  создают дублируемый в интернете контент. Но есть  случаи и похуже — это сайты, которые не просто «тырят» ваш контент, но и не утруждают себя перелинковкой и загрузкой изображений на собственный сервак. А это уж совсем нехорошо. Загрузка изображений с вашего сервера называется хотлинкинг,  и это значит, что в таком случае сайт-вор украл часть вашего драгоценного трафика. 

Для профилактики людей от таких нехороших веб-мастеров можно включить следующие строки  файл .htaccess (очевидно, заменяйте «yoursite.com» на  адрес вашего сайта)

RewriteBase / 
RewriteCond% {HTTP_REFERER} ^ $! 
RewriteCond% {HTTP_REFERER} ^ http:// (www.) yoursite.com / * $ [NC]!?. 
RewriteRule (GIF | JPG | SWF | FLV | PNG). $ / подача / [R = 302, L] 

2. Предотвращение просмотра директорий и файлов

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

Options All -Indexes

3. 301 редирект  — ведь это хорошо для SEO 

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

Redirect 301 http://www.yoursite.com/article.html http://www.yoursite.com/archives/article   

  

4.  Установить Email для администратора сайта

Используя данный код вы можете по умолчанию установить  Using this code you can specifying the default email address for the server administrator.

ServerSignature EMail
SetEnv SERVER_ADMIN [email protected]

5. Отображение страницы ошибки 404

Когда посетитель пытается получить доступ к некоторым страницам вашего сайта, которых больше не существует, сервер отображает страницу с сообщением «404 файл не найден». Некоторые CMS позволяет устанавливать  специальные пользовательские страницы ошибки 404, но самый простой способ — включить следующую строку в файл .htaccess.

ErrorDocument 404 / 404.html

6. Настройки по умолчанию страницы каталога

Если по какой-то причине вам нужно cделать так, чтобы  страницы каталога отличались. Сделать это очень легко при помощи .htaccess. Например, если вы хотите, чтобы файл default.html стал страницей по умолчанию, просто добавьте эту строку.

DirectoryIndex about.html

7.  Редирект со старого домена на новый

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

# redirect from old domain to new domain
RewriteEngine On
RewriteRule ^(.*)$ http://www.yourdomain.com/$1 [R=301,L] 

8. Блок нежелательных посетителей

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

<IfModule Mod_rewrite.c> 
RewriteEngine на RewriteCond% {HTTP_REFERER} spamteam.com [NC, OR] 
RewriteCond% {HTTP_REFERER} trollteam.com [NC, OR] 
RewriteRule. * — [F] 
</ IfModule>  

 

9. Укажите лимит загрузки файлов для PHP в Htaccess

Эта опция заслуживает внимания если вы используете  Drupal на виртуальном хостинге. Мне пришлось сбросить лимит для загрузки файлов, чтобы мои клиенты могли загружать большие файлы. Первое  изменение — это максимальный размер файла для загрузки, второе — максимальный размер отправленных данных, третье — максимальное время в секундах на обработку запроса. При этом скрип можно запускать до того, как заканчивает работу парсер. Самый последний код — это  максимальное время в секундах для обработки  сценария.  Допускается для анализа входных данных, например, таких как загрузка файлов на сервер, POST и GET-данных.

php_value upload_max_filesize 20M 
php_value post_max_size 20M 
php_value max_execution_time 200 
php_value max_input_time 200

10. Сжатие файлов

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

AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript

11. Кэш файлов

Чтобы оптимизировать скорость кэширования файлов используйте сниппет:

<FilesMatch “.(flv|gif|jpg|jpeg|png|ico|swf|js|css|pdf)$”>
Header set Cache-Control “max-age=2592000″
</FilesMatch>

12. Редирект пользователей на разные сайты за исключением нескольких IP-адресов

Ежели вы желаете отправить посетителей сайна на разные IP-адреса или же дать доступ к определенным IP-адресам, то можно использовать следующий код:

ErrorDocument 403 http://www.youdomain.com
Order deny,allow
Deny from all
Allow from 124.34.48.165
Allow from 102.54.68.123

13.  Конечный слэш

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

<IfModule Mod_rewrite.c> 
RewriteCond% {REQUEST_URI} / + [^ \.]+ $ 
RewriteRule ^ (. + [^ /]) $% {REQUEST_URI} / [R = 301, L] 
</ IfModule>

14. Не показывать запрос о загрузке файлов

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

AddType application/octet-stream .pdf
AddType application/octet-stream .zip
AddType application/octet-stream .mov  

 

15.  Изменяем тип файлов

Любые файлы можно переобразовать в одну группу. Будь то  image.jpg, index.html, или default.cgi — все будут действовать как php

<Files test>
ForceType application/x-httpd-php
SetHandler application/x-httpd-php
</Files> 

Автор — Дежурка
В статьи использованы статьи и материалы 

Также полезную информацию по теме можете найти здесь: habrhabr

 

 



Комментарии

Оставить ответ

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

Случайные статьи

Добавление комментариев .htaccess — CodeRoad

Почему это работает:

RewriteRule (.+)/$ $1

и эта работа:

RewriteRule (.+)/$ $1 [L] #bla bla bla

но это не работает:

RewriteRule (.+)/$ $1 #bla bla bla
apache .htaccess comments Поделиться Источник user1032531     28 февраля 2014 в 22:14

2 Ответа



135

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

Последнее правило не работает, потому что комментарии на самом деле не являются комментариями. Комментарии в htaccess должны начинаться с # (должны быть в начале строки), а не произвольно в любом месте.

Во втором случае #bla bla bla интерпретируется как 4-й параметр директивы RewriteRule , который просто игнорируется.

В последнем случае #bla bla bla интерпретируется как 3-й параметр, который в случае RewriteRule-это то, куда идут флаги, а #bla bla bla -это не те флаги, которые понимает mod_rewrite, поэтому вы получаете ошибку.

Поделиться Jon Lin     28 февраля 2014 в 22:27



28

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

Строки, начинающиеся с символа hash»#», считаются комментариями и игнорируются. Комментарии не могут быть включены в строку после директивы конфигурации. — Официальное руководство Apache 2.4

Однако, как ни странно, каждый модуль получает возможность разбирать входные данные для своих директив, как ему нравится — поэтому mod_rewrite решает, что делать с любой строкой, начинающейся с RewriteRule

Я точно не знаю , но мне кажется, что mod_rewrite игнорирует все после [flags], а # вообще не нужен.

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

Поделиться IMSoP     28 февраля 2014 в 22:27


Похожие вопросы:


Добавление комментариев к rails

Pls, я тихий новичок в rails, как я могу создать свою веб-страницу, чтобы иметь комментарии, которые прикреплены к статьям, то есть каждая статья имеет много комментариев, и комментарий может…


Sqlite: добавление комментариев к таблицам и столбцам?

В MySQL Workbench можно добавлять комментарии к таблицам и столбцам в базе данных MySQL. Поддерживает ли Sqlite добавление комментариев к таблицам и столбцам?


Добавление комментариев к нескольким моделям

Im пытается добавить комментарии к моей модели тем так же, как вы можете добавлять комментарии к сообщениям в моем приложении. в настоящее время я должен partials для комментариев _comment.html.erb…


Добавление комментариев к столбцам

Возможный Дубликат : Alter MYSQL таблица для добавления комментариев к столбцам Привет Ребята, Я погуглил по всему месту, но я не могу найти ответ. Я знаю, что вы можете добавлять комментарии к…


Добавление комментариев в программировании потребляет системные ресурсы?

Недавно я нашел два сообщения в StackOverflow о добавлении комментариев в программировании. Сообщений : 1 , 2 Пройдя через эти посты мне не терпелось узнать, что comments.i.e : 1.Do добавление…


Можно ли изменить семейство шрифтов для комментариев конкретно?

Я хочу изменить семейство шрифтов для комментариев, которые я пишу в своем коде. Я искал вокруг и нашел этот фрагмент кода для изменения цвета комментариев: editor.tokenColorCustomizations: {…


Добавление раздела комментариев в Fancybox

Я создаю галерею изображений jquery, и я использую fancy box для создания модального наложения изображения при нажатии миниатюр. Не могли бы вы предложить, как добавить раздел комментариев к…


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

В моем пользовательском модуле я хотел бы добавить функциональность комментариев. Я пробовал несколько вещей, но не тренировался до сих пор. // render comments form $output .=…


Как цвет подсветки .htaccess файлы в Netbeans

Есть ли способ получить Netbeans, чтобы покрасить синтаксис .файлы htaccess? Даже дифференциация комментариев от кода была бы полезна


Добавление заголовков Expires и .htaccess

Я пытаюсь оптимизировать сайт WordPress моего типа & музыки на основе отчетов, которые я получаю от GTmetrix. Одна из вещей, которые мне советуют сделать, — это добавить заголовки expires и…


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

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