32 полезных директивы .htaccess
.htaccess часто требуется отредактировать для настройки вашего веб-сервера - от безопасности до перенаправления на повышение производительности. Вот список нескольких очень полезных директив.
расшифровка
Переписать и перенаправить
Как заставить www
ПереписатьEngine на
RewriteCond% {HTTP_HOST} ^ пример / .com [NC]
RewriteRule ^ (. *) $ Http://www.example.com/$1 [L, R = 301, NC]
Как заставить www в общих чертах
RewriteCond% {HTTP_HOST}! ^ $
RewriteCond% {HTTP_HOST}! ^ Www /. [NC]
RewriteCond% {HTTPS} s ^ on (s) |
RewriteRule ^ http% 1: //www.% {HTTP_HOST}% {REQUEST_URI} [R = 301, L]
Как заставить не-www
ПереписатьEngine на
RewriteCond% {HTTP_HOST} ^ www / .example / .com [NC]
RewriteRule ^ (. *) $ Http://example.com/$1 [L, R = 301]
Как заставить не-WW в общем роде
ПереписатьEngine на
RewriteCond% {HTTP_HOST} ^ www /.
RewriteCond% {HTTPS} s ^ on (s) | off
RewriteCond http% 1: //% {HTTP_HOST} ^ (https?: //) (www /.)? (. +) $
RewriteRule ^% 1% 3% {REQUEST_URI} [R = 301, L]
Как заставить HTTPS
ПереписатьEngine на
RewriteCond% {HTTPS}! On
RewriteRule (. *) Https: //% {HTTP_HOST}% {REQUEST_URI}
Как заставить HTTPS за прокси
RewriteCond% {HTTP: X-Forwarded-Proto}! Https
RewriteRule (. *) Https: //% {HTTP_HOST}% {REQUEST_URI}
Как заставить косую черту
RewriteCond% {REQUEST_URI} /+[^/.]+$
RewriteRule ^ (. + [^ /]) $% {REQUEST_URI} / [R = 301, L]
Как перенаправить одну страницу
Redirect 301 /oldpage.html http://www.yoursite.com/newpage.html
Redirect 301 /oldpage2.html http://www.yoursite.com/folder/
Как псевдоним одного каталога
RewriteEngine On
RewriteRule ^ source-directory /(.*) target-directory / $ 1
Как псевдоним пути к сценарию
RewriteEngine On
RewriteRule ^ $ index.fcgi / [QSA, L]
RewriteCond% {REQUEST_FILENAME}! -F
RewriteCond% {REQUEST_FILENAME}! -D
RewriteRule ^ (. *) $ Index.fcgi / $ 1 [QSA, L]
Как перенаправить весь сайт
Redirect 301 / http://newsite.com/
Как псевдоним "Чистый" URL
RewriteEngine On
RewriteCond% {SCRIPT_FILENAME}! -D
RewriteRule ^ ([^.] +) $ $ 1.php [NC, L]
Безопасность
Как запретить доступ
## Apache 2.2
Отрицать все
## Apache 2.4
# Требовать все отказано
Как запретить любой доступ, кроме вашего
## Apache 2.2
Заказать отказать, разрешить
Отрицать все
Разрешить из xxx.xxx.xxx.xxx
## Apache 2.4
# Требовать все отказано
# Требуется ip xxx.xxx.xxx.xxx
Как разрешить доступ всем, кроме спамеров
## Apache 2.2
Заказать отказать, разрешить
Разрешить от всех
Запретить от xxx.xxx.xxx.xxx
Запретить от xxx.xxx.xxx.xxy
## Apache 2.4
# Требовать все предоставленные
# Требовать не ip xxx.xxx.xxx.xxx
# Требовать не ip xxx.xxx.xxx.xxy
Как запретить доступ к скрытым файлам и каталогам
RewriteCond% {SCRIPT_FILENAME} -d [ИЛИ]
RewriteCond% {SCRIPT_FILENAME} -f
RewriteRule "(^ | /) /." - [F]
RedirectMatch 404 //..*$]
Как запретить доступ к резервным и исходным файлам
<FilesMatch "(/. (Bak | config | dist | fla | inc | ini | log | psd | sh | sql | swp) | ~) $">
## Apache 2.2
Заказать разрешить, отказать
Отрицать все
Удовлетворить все
## Apache 2.4
# Требовать все отказано
Как отключить просмотр каталогов
Опции Все Индексы
Как отключить хотлинкинг изображений
ПереписатьEngine на
RewriteCond% {HTTP_REFERER}! ^ $
RewriteCond% {HTTP_REFERER}! ^ Http (s)?: // (www /.)? Yourdomain.com [NC]
RewriteRule /.(jpg|jpeg|png|gif)$ - [NC, F, L]
Как защитить паролем каталог
htpasswd -c /home/fellowship/.htpasswd boromir
AuthType Basic
AuthName "Не просто"
AuthUserFile /home/fellowship/.htpasswd
Требуется действительный пользователь
Как защитить паролем файл или несколько файлов
AuthName "Один до сих пор не просто"
AuthType Basic
AuthUserFile /home/fellowship/.htpasswd
<Файлы "one-ring.o">
Требуется действительный пользователь
</ Files>
<FilesMatch ^ ((одна | две | три) -кольца? /. O) $>
Требуется действительный пользователь
</ FilesMatch>
Спектакль
Сжатие текстовых файлов
<IfModule mod_deflate.c> # Сжатие силы для искаженных заголовков. # http://developer.yahoo.com/blogs/ydn/posts/2010/12/pushing-beyond-gzipping <IfModule mod_setenvif.c> <IfModule mod_headers.c> SetEnvIfNoCase ^ (Accept-EncodXng | X-cept-Encoding | X {15} | ~ {15} | - {15}) $ ^ ((gzip | deflate) / s *,? / S *) + | [X ~ -] {4,13} $ HAVE_Accept-Encoding RequestHeader добавить Accept-Encoding "gzip, deflate" env = HAVE_Accept-Encoding </ IfModule> </ IfModule> # Сжать все выходные данные, помеченные одним из следующих MIME-типов # (для версий Apache ниже 2.3.7 вам не нужно включать `mod_filter` # и может удалить строки `<IfModule mod_filter.c>` и `</ IfModule>` # as `AddOutputFilterByType` все еще находится в основных директивах). <IfModule mod_filter.c> AddOutputFilterByType DEFLATE application / atom + xml / приложение / javascript / приложение / JSON / приложение / rss + xml / application / vnd.ms-fontobject / application / x-font-ttf / application / x-web-app-manifest + json / application / xhtml + xml / application / xml / font / opentype / image / svg + xml / изображение / x-icon / текст / CSS / text / html / текст / простой / текст / х-компонент / текст / XML </ IfModule> </ IfModule>
Установить заголовки Expires
Установив заголовки expire, вы можете использовать кеширование в браузере
<IfModule mod_expires.c> ExpiresActive on ExpiresDefault "доступ плюс 1 месяц" # CSS ExpiresByType text / css "доступ плюс 1 год" # Обмен данными Приложение ExpiresByType / json "доступ плюс 0 секунд" Приложение ExpiresByType / xml "доступ плюс 0 секунд" ExpiresByType text / xml "доступ плюс 0 секунд" # Фавикон (не может быть переименован!) ExpiresByType image / x-icon "доступ плюс 1 неделя" # HTML-компоненты (HTC) ExpiresByType text / x-component "доступ плюс 1 месяц" # HTML ExpiresByType text / html "доступ плюс 0 секунд" # JavaScript Приложение ExpiresByType / javascript "доступ плюс 1 год" # Манифест файлов Приложение ExpiresByType / x-web-app-manifest + json "доступ плюс 0 секунд" ExpiresByType text / cache-manifest "доступ плюс 0 секунд" # Средства массовой информации ExpiresByType audio / ogg "доступ плюс 1 месяц" ExpiresByType image / gif "доступ плюс 1 месяц" ExpiresByType image / jpeg "Доступ плюс 1 месяц" ExpiresByType image / png "доступ плюс 1 месяц" ExpiresByType video / mp4 "доступ плюс 1 месяц" ExpiresByType video / ogg "доступ плюс 1 месяц" ExpiresByType видео / вебм "доступ плюс 1 месяц" # Веб-каналы Приложение ExpiresByType / atom + xml "доступ плюс 1 час" Приложение ExpiresByType / rss + xml "доступ плюс 1 час" # Веб-шрифты Приложение ExpiresByType / font-woff2 "доступ плюс 1 месяц" Приложение ExpiresByType / font-woff "доступ плюс 1 месяц" Приложение ExpiresByType / vnd.ms-fontobject "доступ плюс 1 месяц" Приложение ExpiresByType / x-font-ttf "доступ плюс 1 месяц" Шрифт ExpiresByType / opentype "доступ плюс 1 месяц" ExpiresByType image / svg + xml "доступ плюс 1 месяц" </ IfModule>
Выключить электронные тэги
Опуская ETag, вы заставляете быть зависимыми от заголовков Expires и управления кешем
<IfModule mod_headers.c> Заголовок сброшен ETag </ IfModule> FileETag Нет
Разнообразный
Как установить переменные PHP
php_value
# Например:
php_value upload_max_filesize 50M
php_value max_execution_time 240
Как настраивать страницы ошибок
ErrorDocument 500 «Хьюстон, у нас проблема».
ErrorDocument 401 http://error.yourdomain.com/mordor.html
ErrorDocument 404 /errors/halflife3.html
Как заставить загрузку
<Files * .md> Приложение ForceType / octet-stream Набор заголовков вложения Content-Disposition </ Files>Как предотвратить загрузку
<FilesMatch "/. (Tex | log | aux) $"> Набор заголовков Content-Type text / plain </ FilesMatch>Как разрешить междоменные шрифты
<IfModule mod_headers.c> <FilesMatch "/. (Eot | otf | ttc | ttf | woff | woff2) $"> Набор заголовков Access-Control-Allow-Origin "*" </ FilesMatch> </ IfModule>
Как автоматически кодировать UTF-8
# Используйте кодировку UTF-8 для всего обслуживаемого текста / обычного или text / html AddDefaultCharset utf-8
# Принудительно использовать UTF-8 для ряда форматов файлов
AddCharset utf-8 .atom .css .js .json .rss .vtt .xml
Как перейти на другую версию PHP
Приложение AddHandler / x-httpd-php55 .php
# В качестве альтернативы вы можете использовать AddType
Приложение AddType / x-httpd-php55 .php
Новый контент: Composer: менеджер зависимостей для PHP , R программирования