Как стать автором
Обновить
11
0

Пользователь

Отправить сообщение
Приведенный ниже код позволяет поисковым роботам (в данном случае, googlebot) просматривать страницу и делает так, чтобы я, с моего IP, мог входить на сайт без пароля, а мой клиент и посетители – по паролю. Также данным кодом разрешено проведение XHTML и CSS валидации! (w3.org)

AuthName "SiteName Administration"
AuthUserFile /home/sitename.com/.htpasswd
AuthType basic
Require valid-user
Order deny,allow
Deny from all
Allow from 24\\.205\\.23\\.222
Allow from w3.org htmlhelp.com
Allow from googlebot.com
Satisfy Any

Каждый образец кода скопирован с форума htaccessElite. Там же можно найти дополнительную информацию по каждому из образцов.
NB!: Большинство приведенных примеров можно использовать с директивой Files or Filesmatch, чтобы инструкции, содержащиеся в них, применялись только к конкретным файлам.
NB!: Инструкции, направленные на переопределение (rewrite) должны всегда предваряться следующими строками:

Options +FollowSymLinks
RewriteEngine On
RewriteBase /

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

#Делает так, что файлы, напр., image.gif, blah.html, index.cgi исполняются как php
ForceType application/x-httpd-php

Чтобы переадресовать запросы, созданные не по https протоколу на https, и решить проблему необходимости повторной авторизации при использовании htpasswd

SSLOptions +StrictRequire
SSLRequireSSL
SSLRequire %{HTTP_HOST} eq "google.com"
ErrorDocument 403 https://google.com

Редирект с битых ссылок, не вредящий SEO
Для одного удаленного файла

Redirect 301 /d/file.html http://www.htaccesselite.com/r/file.html

Для группы файлов типа blog/this.php?gh
RedirectMatch 301 /blog(.*) http://www.askapache.com/$1

При смене доменного имени

Redirect 301 / http://www.newdomain.com
Обязательное www в запросе
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^/robots\\.txt$
RewriteCond %{HTTP_HOST} !^www\\.example\\.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]

Необязательное www в запросе

Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^/robots\\.txt$ [NC]
RewriteCond %{HTTP_HOST} !^www\\.[a-z-]+\\.[a-z]{2,6} [NC]
RewriteCond %{HTTP_HOST} ([a-z-]+\\.[a-z]{2,6})$ [NC]
RewriteRule ^/(.*)$ http://%1/$1 [R=301,L]

Убираем субдомен из строки запроса

Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^/robots\\.txt$
RewriteCond %{HTTP_HOST} \\.([a-z-]+\\.[a-z]{2,6})$ [NC]
RewriteRule ^/(.*)$ http://%1/$1 [R=301,L]

Убираем субдомен из строки запроса

Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} \\.([^\\.]+\\.[^\\.0-9]+)$
RewriteCond %{REQUEST_URI} !^/robots\\.txt$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

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

ErrorDocument 403 http://www.someothersite.com
Order deny,allow
Deny from all
Allow from 24.33.65.6

Операции над переменными (mod_env)
Установка часового пояса сервера:

SetEnv TZ America/Indianapolis

Установка email администратора сервера:

SetEnv SERVER_ADMIN webmaste@htaccesselite.com

Выключение ServerSignature
ServerSignature Off
Добавление языка и кодировки в заголовки без использования мета-тэгов
AddDefaultCharset UTF-8
# Или AddType 'text/html; charset=UTF-8' html
DefaultLanguage en-US

C использованием директивы Files

AddDefaultCharset UTF-8
DefaultLanguage en-US

C использованием директивы FilesMatch (более предпочтительно)

AddDefaultCharset UTF-8
DefaultLanguage en-US

Использование собственного файла php.ini с помощью mod_php или php, установленного как cgi
Статья на тему: Custom PHP.ini tips and tricks
Если php работает как модуль Apache (mod_php) в корневом файле .htaccess установите следующее:
SetEnv PHPRC /location/todir/containing/phpinifile
Если php установлен как cgi, поместите Ваш файл php.ini в директорию, содержащую php, в описываемом случае /cgi-bin/, а в файл htaccess добавьте следующее:
AddHandler php-cgi .php .htm Action php-cgi /cgi-bin/php5.cgi
Если cgi-php работет через оболочку (для FastCGI), необходимо в скрипте оболочки изменить #!/bin/sh export PHP_FCGI_CHILDREN=3 exec /user3/x.com/htdocs/cgi-bin/php5.cgi на следующее #!/bin/sh export PHP_FCGI_CHILDREN=3 exec /x.com/cgi-bin/php.cgi -c /abs/path/to/php.ini
Безопасность папок: Удаление возможности исполнять скрипты
Это можно сделать несколькими способами. К примеру:
AddHandler cgi-script .php .pl .py .jsp .asp .htm .shtml .sh .cgi
Options -ExecCGI

Таким образом Вы определите, что файлы с перечисленными расширениями попадают в сферу действия команды -ExecCGI, а значит и -FollowSymLinks
Разрешение только методов GET и PUT при обращении к серверу.
Options -ExecCGI -Indexes -All +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_METHOD} !^(GET|PUT)
RewriteRule .* - [F]
Обработка всех файлов gif скриптом cgi
Action image/gif /cgi-bin/filter.cgi

Обработка запроса / файла в зависимости от метода
Script PUT /cgi-bin/upload.cgi
Форсированная загрузка файла вместо отображения его содержимого прямо в браузере
AddType application/octet-stream .avi
AddType application/octet-stream .mpg

А в HTML-коде достаточно поставить ссылку прямо на нужный файл.
Отображение исходного кода вместо выполнения скрипта
Если возникла необходимость отобразить файлы типа .pl, .py или .cgi в виде исходного кода, а не исполнять их как скрипты, создайте в папке, где они расположены, файл .htaccess, содержащий следующее:
RemoveHandler cgi-script .pl .py .cgi
Многократное увеличение скорости работы сайта при помощи кэширования!
Статья на тему: Speed Up Sites with htaccess Caching

# НА МЕСЯЦ

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

# НА НЕДЕЛЮ

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

# НА ДЕНЬ

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

Предотвращение кражи изображений и файлов

Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\\.)?askapache.com/.*$ [NC]
RewriteRule \\.(gif|jpg|swf|flv|png)$ http://www.askapache.com/evil-hotlinker.… [R=302,L]

Замена стандартных сообщений об ошибке

ErrorDocument 404 /favicon.ico
ErrorDocument 403 https://secure.htaccesselite.com
ErrorDocument 404 /cgi-bin/error.php
ErrorDocument 400 /cgi-bin/error.php
ErrorDocument 401 /cgi-bin/error.php
ErrorDocument 403 /cgi-bin/error.php
ErrorDocument 405 /cgi-bin/error.php
ErrorDocument 406 /cgi-bin/error.php
ErrorDocument 409 /cgi-bin/error.php
ErrorDocument 413 /cgi-bin/error.php
ErrorDocument 414 /cgi-bin/error.php
ErrorDocument 500 /cgi-bin/error.php
ErrorDocument 501 /cgi-bin/error.php

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


AuthName "Prompt"
AuthType Basic
AuthUserFile /home/askapache.com/.htpasswd
Require valid-user

Защита паролем нескольких файлов:

AuthName "Development"
AuthUserFile /.htpasswd
AuthType basic
Require valid-user

Примеры использования директивы Allow:

# Частичное разрешение (доменное имя)
Allow from 10.1.0.0/255.255.0.0

# Полное разрешение на 1 IP
Allow from 10.1.2.3

# Полное разрешение на несколько IP
Allow from 192.168.1.104 192.168.1.205

# Разрешение при совпадении части IP адреса с образцом
Allow from 10.1
Allow from 10 172.20 192.168.2

# разрешение для пары сеть/маска подсети
Allow from 10.1.0.0/255.255.0.0


Использование переменных окружения в зависимости от посетителя:

SetEnvIf User-Agent ^KnockKnock/2\\.0 let_me_in
Order Deny,Allow
Deny from all
Allow from env=let_me_in
Разрешение для домена (при запрете для субдомена)
Order Allow,Deny
Allow from apache.org
Deny from foo.apache.org
Доступ с IP адреса без пароля, а не с IP – по паролю
AuthUserFile /home/www/site1-passwd
AuthType Basic
AuthName MySite
Require valid-user
Allow from 172.17.10
Satisfy Any

Блокирование доступа к файлам в определенные часы
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
# В 16 часов закрыть доступ к файлам
RewriteCond %{TIME_HOUR} ^16$
RewriteRule ^.*$ - [F,L]

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

# Базовые установки
##############################################
Options +ExecCGI -Indexes
DirectoryIndex index.php index.html index.htm

### Умолчания ###
ServerSignature Off
AddType video/x-flv .flv
AddType application/x-shockwave-flash .swf
AddType image/x-icon .ico
AddDefaultCharset UTF-8
DefaultLanguage en-US
SetEnv TZ America/Indianapolis
SetEnv SERVER_ADMIN webmaster@^^SITE^^.^^TLD^^

### FAST-CGI ###
AddHandler fastcgi-script fcgi
AddHandler php-cgi .php
Action php-cgi /cgi-bin/php5-wrapper.fcgi

# Заголовки и кэширование
##############################################
#### КЭШИРОВАНИЕ ####
# НА ГОД

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

# НА НЕДЕЛЮ

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

# НА 10 МИНУТ

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

# НЕ КЭШИРОВАТЬ

Header unset Cache-Control


# ПЕРЕОПРЕДЕЛЕНИЯ И ПЕРЕНАПРАВЛЕНИЯ
##############################################
### SEO редирект ###
Redirect 301 /2006/uncategorized/htaccesselitecom-aboutus.html http://www.^^SITE^^.^^TLD^^

### ПЕРЕОПРЕДЕЛЕНИЯ ###
RewriteEngine On
RewriteBase /

# АВТОРИЗАЦИЯ
##############################################
AuthName "^^SITE^^.^^TLD^^"
Require valid-user
AuthUserFile /^^SITE^^.^^TLD^^/.htpasswd
AuthType basic
депрессивный какой-то мужик :)

Информация

В рейтинге
Не участвует
Откуда
Минская обл., Беларусь
Работает в
Зарегистрирован
Активность