14 полензых вставок кода для htaccess

4 ответ(ов) в теме
moto
не в сети 2 часа
На сайте с 12.03.2017
Администратор
Тем 3402
Сообщения 13586
0
14:38

Управление доступом к файлам и каталогам

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

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

deny from all

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

order deny,allow<br> <br>deny from all<br> <br>allow from xxx.xxx.xxx.xxx

xxx.xxx.xxx.xxx - ваш IP адрес. Если заменить последние три цифры на 0/12, например, то будет указан диапазон IP адресов в одной сети. Но такой подход может привести к проблемам, поэтому лучше указывать список IP адресов раздельно.

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

<Files .htaccess><br> <br>order allow,deny<br> <br>deny from all<br> <br></Files>

Аналогично, если вам требуется открыть доступ с определенных IP адресов, перечислите их с помощью allow from.

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

<FilesMatch ".(htaccess|htpasswd|ini|phps|fla|psd|log|sh)$"><br> <br>Order Allow,Deny<br> <br>Deny from all<br> <br></FilesMatch>

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

Для запрещения просмотра содержимого директории используйте следующий код:

Options All -Indexes

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

Options All +Indexes

3. Ускоряем загрузку с помощью сжатия файлов

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

AddOutputFilterByType DEFLATE text/html

А для сжатия текстовых:

AddOutputFilterByType DEFLATE text/plain<br>

Можно также сжимать JavaScript файлы или определять несколько типов файлов для архивации:

AddOutputFilterByType DEFLATE application/javascript<br> <br>AddOutputFilterByType DEFLATE application/rss+xml

В качестве альтернативы можно сжимать все HTML, JavaScript, CSS и прочие файлы с помощью GZIP:

<IfModule mod_gzip.c><br> <br>mod_gzip_on Yes<br> <br>mod_gzip_dechunk Yes<br> <br>mod_gzip_item_include file .(html?|txt|css|js|php|pl)$<br> <br>mod_gzip_item_include handler ^cgi-script$<br> <br>mod_gzip_item_include mime ^text.*<br> <br>mod_gzip_item_include mime ^application/x-javascript.*<br> <br>mod_gzip_item_exclude mime ^image.*<br> <br>mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*<br> <br></IfModule>

4. Защищаем сайт от хотлинкинга

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

RewriteEngine on<br> <br>RewriteCond %{HTTP_REFERER} !^$<br> <br>RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?вашдомен.ru [NC]<br> <br>RewriteRule .(jpg|jpeg|png|gif)$ - [NC,F,L]

5. Блокирование пользователей перенаправленных с определенного домена

Если вы не приветствуете пользователей определенного домена, то можно забанить на своем сайте. Например, если ваш сайт попал в список там, откуда не желателен трафик (например, порнографические сайты, неонацисткие ресурсы и прочее), то вы можете перекрыть его с помощью страницы 403 (запрет доступа). Нужно, чтобы был включен mod_rewrite (обычно он включен). Добавляем код:

<IfModule mod_rewrite.c><br> <br>RewriteEngine on<br> <br>RewriteCond %{HTTP_REFERER} bannedurl1.com [NC,OR]<br> <br>RewriteCond %{HTTP_REFERER} bannedurl2.com [NC,OR]<br> <br>RewriteRule .* - [F]<br> <br></ifModule><br>

Нужно заменить bannedurl1.com и bannedurl2.com на имена доменов из вашего черного списка. Флаг [NC] указывает на отсутствие чувствительности к регистру в имени домена, а флаг [F] определяет действие - в нашем примере вывод страницы 403. Если нужно забанить несколько сайтов, используйте флаг [NC,OR] для каждого домена, включая последний. Для запрета только одного домена можно использовать только флаг [NC].

6. Блокирование запросов от определенных агентов

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

RewriteEngine On <br>RewriteBase / <br>SetEnvIfNoCase Referer "^$" bad_user<br>SetEnvIfNoCase User-Agent "^badbot1" bad_user<br>SetEnvIfNoCase User-Agent "^badbot2" bad_user<br>SetEnvIfNoCase User-Agent "^badbot3" bad_user<br>Deny from env=bad_user

Замените badbot1, badbot1 и так далее именами агентов из вашего журнала. Такое действие будет держать данные программы подальше от вашего сайта.

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

Другой метод ускорения загрузки вашего сайта - кеширование файлов. вот что нужно добавить в файл .htaccess для включения кеширования:

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

Вы можете добавить типы файлов (или удалить некоторые из них) к списку в примере. Также можно использовать max-age для указания времени в секундах, для хранения ваших файлов в кеше.

8. Отключение кеширования для определенных типов файлов

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

<FilesMatch ".(pl|php|cgi|spl|scgi|fcgi)$"><br> <br>Header unset Cache-Control<br> <br></FilesMatch>

Просто добавьте типы фалов, которые не нужно кешировать в список.

9. Пропускаем диалог загрузки

По умолчанию, когда вы загружаете файл с веб сервера, то появляется диалог, в котором запрашивается действие с файлом (сохранить или открыть). Данный диалог очень раздражает при загрузке больших медиа файлов или документов PDF. Если файлы загружены на ваш сервер для того, чтобы пользователь их скачал, то можно сразу начать процесс. Нужно поместить в файл .htaccess следующие строки:
AddType application/octet-stream .pdf<br> <br>AddType application/octet-stream .zip<br> <br>AddType application/octet-stream .mp3

10. Переименование файла .htaccess

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

AccessFileName htac.cess

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

11. Изменение индексной страницы по умолчанию

Если вам требуется, чтобы индексная страница отличалась от значения по умолчанию, index.html, index.php, index.htm и так далее, то данная задача решается легко. Вот что нужно добавить в файл .htaccess:

DirectoryIndex mypage.html

Замените mypage.html на адрес URL нужной страницы.

12. Перенаправление на безопасное соединение https

Если вы используете https и хотите, чтобы все пользователи перенаправлялись на него, то вам поможет следующий код:
RewriteEngine On<br>RewriteCond %{HTTPS} !on<br>RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

13. Ограничение размера файла загрузки в PHP, максимального размера запроса и максимального времени выполнения скрипта

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

php_value upload_max_filesize 15M

Конечно, вы можете установить значение, которое требуется, в нашем примере 15M (MB) не является фиксированным. Также можно ограничить максимальны размер запроса для загрузки в PHP:

php_value post_max_size 10M

Измените 10M на то значение, которое вам требуется.

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

php_value max_execution_time 240

240 - количество секунд до прерывания работы скрипта.

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

php_value max_input_time 180

14. Маскировка типов файлов

Иногда нужно скрыть от пользователя типы файлов на сервере. Один из способов решить задачу - замаскировать их. Например, вы можете сделать так. что все файлы будут выглядеть как HTML или PHP:

ForceType application/x-httpd-php<br>ForceType application/x-httpd-php

Редакции сообщения
0
не в сети 3 месяца
На сайте с
Участник
0
08:50

Добавлю:

Варианты реализации Редиректа с помощью файла .htaccess

Простой редирект:
Redirect 301 / http://www.domainname.ru/
или
redirect /secret http://www.site.ru/nosecret
Ставится в файле .htaccess или httpd.conf для Apache. Первый "/" означает, что всё с верхнего уровня сайта, включая все подкаталоги, будет переадресовано (не забывайте поставить последний "/"). Если Вы хотите переадресовать только страницу, сохранив PR старой страницы, можно сделать так:
Redirect 301 /old/old.htm http://www.you.ru/new.htm где:
/old/old.htm - путь и имя старой страницы
http://www.you.com/new.htm - новый путь и новое имя перемещенной страницы
Редирект на любую страницу по ip пользователя или при запросе конкретной страницы (а также по маске имени).
Если у пользователя ip 192.152.37.125, то он будет перенаправлен на страницу user.php:
SetEnvIf REMOTE_ADDR 192.152.37.125 REDIR="redir"<br>RewriteCond %{REDIR} redir<br>RewriteRule ^/$ /user.php
Редирект при запросе определённых файлов. Если запрашиваются файлы, расширение которых не указано в файле .htaccess (gif и jpg), то следует перенаправление:
RewriteEngine On<br>RewriteRule !.(gif|jpg)$ index.php
Использование mod_rewrite:
Options +FollowSymLinks <br>RewriteEngine on <br>RewriteCond %{HTTP_HOST} ^yourdomain.ru <br>RewriteRule ^(.*)$ http://www.yourdomain.ru/$1 [R=permanent,L]
Редирект с регулярным выражением:
RedirectMatch 301 (.*) http://www.yourdomain.ru$1 Прописывается в файле .htaccess.
(.*) RedirectMatch фактически соответствует регулярным образцам выражения после доменного имени. Таким образом, нельзя выполнить соответствие образца на ^/yourdomain.ru. Однако, можно преобразовать страницы с использованием .html расширения к файлам того же самого названия, но с .php расширением:
RedirectMatch 301 (.*).html$ http://www.yourdomain.ru$1.php
Если необходимо сделать различное перенаправление для отдельных страниц, можно использовать следующее:
RedirectMatch Permanent ^/html/resources.html$ http://www.newdomain.com/resources.php <br>RedirectMatch Permanent ^/html/other_page.html$ http://www.newdomain.com/other_page.php <br>RedirectMatch Permanent ^/(.*)$ http://www.newdomain.com/ "RedirectMatch Permanent" - это эквивалент "RedirectMatch 301", строка с "*(Wildcard)" должна быть последней в этом списке.

Создание удобо читаемых URL
Чтобы преобразовать, например, www.site.ru/product.php?id=123 в www.site.ru/product/123 следующим образом:
RewriteEngine on<br>RewriteRule ^product/([^/.]+)/?$ product.php?id=$1 [L]
В следующем примере преобразуем www.site.ru/script.php?product=123 в www.site.ru/cat/product/123/:
RewriteRule cat/(.*)/(.*)/$ /script.php?$1=$2

Редирект на PHP:
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.newdomain.ru/newdir/newpage.htm";);
exit();
Естественно, надо создать страницу, при обращении к которой и будет происходить Редирект, и разместить её на сервере. И лучше укажите HTTP/1.1 (а не HTTP/1.0 или HTTP/0.9, которые не поддерживают виртуальный хостинг)

Редирект всех файлов в папке на один файл.
Например вы больше не нуждаетесь в разделе сайта Super discount и хотите перенаправить все запросы к папке /superdiscount на один файл /hot-offers.php. Для этого добавляем в .htaccess следующий код.
RewriteRule ^superdiscount(.*)$ /hot-offers.php [L,R=301]

Редирект всей папки кроме одного файла
В следующем примере все файлы из папки /superdiscount будут редиректится на на файл /hot-offers.php, КРОМЕ файла /superdiscount/my-ebook.html котоый должен редиректится на /hot-to-make-million.html
RewriteRule ^superdiscount/my-ebook.html /hot-to-make-million.html [L,R=301]<br>RewriteRule ^superdiscount(.*)$ /hot-offers.php [L,R=301]
Редирект динамического URL на новый файл.
Данный вариант пригодится если вы хотите редиректить динамический URL с параметрами на новый статический файл.
RewriteRule ^article.jsp?id=(.*)$ /latestnews.htm [L,R=301]То есть теперь, запрос к файлу вида http://www.kass.ws/article.jsp?id=8632 и/или http://www.kass.ws/article.jsp?id=1245 будет отправлен на файл http://www.kass.ws/latestnews.htm.

Массовый редирект новых файлов.
Тепепь перейдем к самому сложному моменту, когда вам надо редиректить массу URL-ов, например после смены вашей CMS. Тут сразу возникает ряд проблем. Во-первых, внесение всех изменившихся адресов в .htaccess файл займет очень много времени, да и само по себе занятие малоприятное. Во-вторых, слишком много записей в .htaccess файле будут тормозить Apache сервера. И в третьих, при внесении такого количества информации высока вероятность, что вы где то ошибетесь. По этому, самый лучший выход, это нанять програмиста который вам напишет динамический редирект.
Нижеприведенный пример написан на PHP, но так же может быть выполнен на любом языке. Предположим вы перешли на новую систему ссылок на вашем сайте и все файлы оканчивающиеся на старый id должны быть средирекчены. Сначала создаем в базе таблицу, которая содержит старый id и новый URL для редиректа. old_id INT new_url VARCHAR (255) Далее пишем код который свяжет ваши старые id с новыми URL-ами
После этого, добавляем следующую строчку в .htaccess:
RewriteRule ^/product-(.*)_([0-9]+).php /redirectold.php?productid=$2
затем создаем PHP файл redirectold.php, который будет поддерживать 301 редирект:
<?php<br>function getRedirectUrl($productid) {<br>// Connect to the database<br>$dServer = "localhost";<br>$dDb = "mydbname";<br>$dUser = "mydb_user";<br>$dPass = "password";<br><br>$s = @mysql_connect($dServer, $dUser, $dPass)<br>or die("Couldn't connect to database server");<br><br>@mysql_select_db($dDb, $s)<br>or die("Couldn't connect to database");<br><br>$query = "SELECT new_url FROM redirects WHERE old_id = ". $productid;<br>mysql_query($query);<br>$result = mysql_query($query);<br>$hasRecords = mysql_num_rows($result) == 0 ? false : true;<br>if (!$hasRecords) {<br>$ret = 'http://www.yoursite.com/';<br>} else {<br>while($row = mysql_fetch_array($result))<br>{<br>$ret = 'http://www.yoursite.com/'. $row["new_url"];<br>}<br>}<br>mysql_close($s);<br>return $ret;<br>}<br><br>$productid = $_GET["productid"];<br>$url = getRedirectUrl($productid);<br><br>header("HTTP/1.1 301 Moved Permanently");<br>header("Location: $url");<br>exit();<br>?>Теперь все запросы к вашим старым URL-ам будут вызывать redirectold.php, который найдет новый URL и вернет 301 ответ с вашей новой ссылкой.
Редиректы в зависимости от времени

Когда нужно применять уловки типа содержания зависящего от времени масса вебмастеров все ещё используют CGI скрипты которые производят редиректы на специальные страницы. Как это может быть сделано через mod_rewrite?
Есть много переменных названных TIME_xxx для условий редиректа. В связке со специальными лексикографическими образцами для сравнения <STRING, >STRING и =STRING мы можем производить редиректы зависящие от времени:
RewriteEngine on<br> RewriteCond %{TIME_HOUR}%{TIME_MIN} >0700<br> RewriteCond %{TIME_HOUR}%{TIME_MIN} <1900<br> RewriteRule ^foo.html$ foo.day.html<br> RewriteRule ^foo.html$ foo.night.htmlЭто выдает содержимое foo.day.html при запросе URL foo.html с 07:00 до 19:00 а в оставшееся время содержимое foo.night.html.

Убираем у всех запросов вначале "WWW."
RewriteEngine on # оглашаем, что хотим использовать mod_rewrite
RewriteCond %{HTTP_HOST} ^www.(.*) [NC]<br>RewriteRule ^/?(.*) http://%1/$1 [L,R=permanent]
Меняем расширение .html на .php
Иногда бывает так, что у Вас статичный веб-сайт, а Вам необходимо, чтобы на нем срабатывал какой-нибудь php-скрипт. Для этого Вам необходимо сказать серверу, чтобы он обрабатывал эту страницу как php-файл.
AddHandler application/x-httpd-php .html
Этот прием можно использовать и для других расширений файлов:
AddHandler application/x-httpd-php .xml
AddHandler application/x-httpd-php .asp

Запрещение доступа в конкретную директорию

для всех ко всем файлам в директории:
deny from all
к конкретному файлу:
<Files secret.php>
deny from all
</Files>
по ip пользователя:
order deny,allow
deny from all
allow from 192.152.37.125
Доступ в данную директорию будет разрешён только пользователю с ip 192.152.37.125.
Директива Options -Indexes - запрет на отображение содержимого каталога при отсутствии индексного файла Иногда нужно сделать так, чтобы в случае отсутствия в каталоге файла, который показывается по умолчанию, не выдавался список файлов в каталоге. Тогда можно добавить в .htaccess такую строчку :
Options -Indexes
В этом случае вместо списка файлов в каталоге посетитель получит HTTP ошибку 403 - access forbidden.
Запретить доступа к файлам с несколькими типа расширений
<Files ~ ".(inc|conf|cfg)$">
deny from all
</Files>
Запрещен доступ к файлам с расширением *.inc, *.conf и *.cfg. Хотя директива, по умолчанию, не работает с регулярными выражениями, но их можно включить поставив символ тильды(~) в опциях директивы. Синтаксис следующий: [тильда] [пробел] [далее_все_без_пробелов] Чтобы блокировать этот доступ, запишем следующее:
RewriteRule ^.htaccess$ - [F]
Это правило переводится так:
Если кто-то пробует обращаться к файлу .htaccess, система должна произвести код ошибки 'HTTP response of 403' или '403 Forbidden - You don't have permission to access /.htaccess on this server'.
Конструкция ^.htaccess$ в этом регулярном выражении означает:
^ - якорь начала строки
$ - якорь конца строки
. - в регулярных выражениях точка '.' обозначает мета-символ и должна быть защищена обратным слэшем (backslash), если Вы все-таки хотите использовать именно фактическую точку.
Имя файла должно быть расположено точно между начальным и конечным якорем. Это будет гарантировать то, что только это определенное имя файла и никакое другое, сгенерирует код ошибки.
[F] - специальный 'запрещающий' флажок (forbidden).
[NC] - не учитывать регистр букв.
[OR] - означает 'или следующее условие'.
Определение кодировки

Определение кодировки, в которой сервер "отдает" файлы

AddDefaultCharset windows-1251
варианты: KOI8-R, UTF-8, Windows-1251
Определение кодировки на загружаемые файлы

CharsetSourceEnc windows-1251

Установка пароля на директорию с помощью .htaccess

Для установки пароля на директорию можно воспользоваться системой базовой авторизации, предусмотренной в веб-сервере Apache. Создаем в каталоге, к которому хотим ограничить доступ по паролю, файл .htaccess с такими директивами:
AuthType Basic<br>AuthName "Some Name"<br>AuthUserFile /www/some_login/www/htdocs/some_dir/.htpasswd<br>require valid-userПуть /www/some_login/www/htdocs/some_dir/.htpasswd обозначает полный путь к файлу паролей на диске нашего сервера. Если, например, вы поместите файл .htpasswd (в нем будут пароли) в домашний каталог, куда вы попадаете, зайдя на сервер по FTP, то путь к этому файлу будет иметь вид /www/some_login/www/htdocs/some_dir/.htpasswd, где some_login - Ваш логин. В директиве AuthUserFile указываем абсолютный путь к файлу с логинами/паролями, который мы создадим чуть позже. Если вы создаете файл .htaccess на своем компьютере, а не сразу на сервере используя текстовый редактор, обратите особое внимание на то, что .htaccess должен передаваться по FTP строго в текстовом (ASCII) режиме.
Создаем файл паролей. Файл с паролями должен содержать строки вида login:password. Пароль должен быть зашифрован с использованием алгоритма MD5. Один из способов создать такой файл - воспользоваться программой, входящей в поставку Apache - htpasswd (на нашем сервере она находится в каталоге /usr/local/apache/bin, полный путь - /usr/local/apache/bin/htpasswd).
Рассмотрим, как создать файл паролей в unix shell прямо на сервере. Зайдем в shell и будем выполнять следующие команды:
htpasswd -mbc .htpasswd user1 7B1safkir
- создаем новый файл .htpasswd, в который добавляем запись для пользователя user1 с паролем, указанным в командной строке.
htpasswd .htpasswd user2
- добавляем в уже существующий файл .htpasswd пользователя user2, а пароль вводим вручную в ответ на соответствующий запрос программы.
После окончания заведения всех логинов файл нужно загрузить на сервер. О других способах установки паролей на страницу

Задаем собственные страницы ошибок

Задать собственную страницу ошибок можно следующим образом:
ErrorDocument 404 http://www.site.ru/404.php
IE игнорирует страницы размером меньше 512 байт.
Индексация директорий и поддиректорий

Чтобы избежать индексации поисковыми системами директорий и поддиректорий, необходимо прописать такую строку, к примеру:
DirectoryIndex index.php
Эта директива задает файл, который будет вызван при обращении к директории без указания имени файла.
Можно указать несколько индексных страниц. При запросе каталога они будут искаться в том порядке, в котором перечислены в директиве DirectoryIndex. Если не будет найден файл index.html, то будет произведен поиск файла index.php и т.д.
DirectoryIndex index.html index.php index.shtml
Лично я предпочитаю переадресовывать с пустых директорий либо на главную страницу сайта, либо на какую-либо другую подходящую страницу. Например, директорию www.site.ru/pic/ можно переадресовать на www.site.ru.

Защита изображений от скачивания

Очень часто бывает, что веб-мастера нагло копируют контент с Вашего сайта вместе с рисунками, причем рисунки подгружаются с Вашего же сервера. Это создает лишний трафик, что, зачастую, приводит к ряду проблем. Как же защититься от таких веб-мастеров и не помешать поисковым роботам индексировать изображения? Все просто:
RewriteEngine on<br>RewriteCond %{HTTP_REFERER} .<br>RewriteCond %{HTTP_REFERER} !^http://([^.]+.)?site. [NC]<br>RewriteCond %{HTTP_REFERER} !google. [NC]<br>RewriteCond %{HTTP_REFERER} !search?q=cache [NC]<br>RewriteCond %{HTTP_REFERER} !msn. [NC]<br>RewriteCond %{HTTP_REFERER} !yahoo. [NC]<br>RewriteCond %{REQUEST_URI} !^/hotlinker.gif$<br>RewriteRule .(gif|jpg|png)$ /hotlinker.gif [NC,L]hotlinker.gif - изображение, которое будет отображаться, вместо истинных изображений. Рекомендую в этом изображении отобразить Ваш логотип и ссылку на Ваш сайт.
Еще один варинат запрета доступа к картинкам с неразрешенных сайтов:
SetEnvIfNoCase Referer "^$" local_ref=1<br>SetEnvIfNoCase Referer "^http://(www.)?htmlweb.ru" local_ref=1<br>SetEnvIfNoCase Referer "^http://(www.)?images.yandex.ru" local_ref=1<br>SetEnvIfNoCase Referer "^http://(www.)?hghltd.yandex.com" local_ref=1<br><FilesMatch ".(jpg|gif|png)"><br> Order Allow,Deny<br> Allow from env=local_ref<br></FilesMatch> Поисковые машини и разного рода сканеры создают коллосальный трафик на вашем сайте. Нижеприведенный блок кода позволит запретить доступ ботам на сайт.
RewriteCond %{HTTP_USER_AGENT} (Googlebot|Slurp|spider|Twiceler|heritrix|<br> Combine|appie|boitho|e-SocietyRobot|Exabot|Nutch|OmniExplorer|<br> MJ12bot|ZyBorg/1|Ask Jeeves|AskJeeves|ActiveTouristBot|<br> JemmaTheTourist| agadine3|BecomeBot|Clustered-Search-Bot|<br> MSIECrawler|freefind|galaxy|genieknows|INGRID|grub-client|<br> MojeekBot|NaverBot|NetNose-Crawler|OnetSzukaj|PrassoSunner|<br> Asterias Crawler|T-H-U-N-D-E-R-S-T-O-N-E|GeorgeTheTouristBot|<br> VoilaBot|Vagabondo|fantomBro wser|stealthBrowser|cloakBrowser|<br> fantomCrew Browser|Girafabot|Indy Library|Intelliseek|Zealbot|<br> Windows 95|^Mozilla/4.05 [en]$|^Mozilla/4.0$) [NC]<br>RewriteRule ^(.*)$ - [F]<br>#<br>RewriteCond %{HTTP_USER_AGENT} ^Mozilla.* [NC,OR]<br>RewriteCond %{HTTP_USER_AGENT} ^Opera.* [NC,OR]<br>RewriteCond %{HTTP_USER_AGENT} ^Firefox.* [NC,OR]<br>RewriteCond %{HTTP_USER_AGENT} ^Netscape.* [NC]<br>RewriteRule ^(.*)$ - [L]<br>RewriteRule ^(.*)$ - [F]
Отслеживание обращений к файлу robots.txt

Чтобы иметь больше информации о посещении поисковиков, полезно иметь подробную информацио об обращении к файлу robots.txt Для того, чтобы оганизовать это, в '.htaccess' должны быть следующие записи:
RewriteEngine on<br> Options +FollowSymlinks<br> RewriteBase /<br> RewriteRule ^robots.txt$ /robot.php?%{REQUEST_URI}
Теперь при запросе файла 'robots.txt' наш RewriteRule переадресует посетителя (робота) к обрабатывающему запросы скрипту robot.php. Кроме того, переменная передается скрипту, которая будет обработана в соответствии с вашими нуждами. 'REQUEST_URI' определяет имя запрашиваемого файла. В данном примере это - 'robots.txt'. Скрипт прочтет содержание 'robots.txt' и отправит его web-браузеру или роботу поискового сервера. Таким образом, мы можем считать хиты посетителей и вести лог-файлы.
PHPSESSID

Для отключения добавления PHPSESSID к URL вставьте в начало index.php:
ini_set("session.use_trans_sid", 0);

Либо в .htaccess пропишите:
php_flag session.use_trans_sid Off
Директивы кеширования

Кэширование для всех типов файлов по времени доступа
ExpiresActive on
ExpiresDefault "access plus 600 seconds"
Кэширование для всех типов файлов по времени изменения
ExpiresActive on
ExpiresDefault "modification plus 600 seconds"
Кэширование для определённых типов файлов
ExpiresByType text/css "modification plus 600 seconds"
ExpiresByType image/jpeg "modification plus 600 seconds"
ExpiresByType image/gif "modification plus 600 seconds"
ExpiresByType image/x-ico "modification plus 600 seconds"
ExpiresByType image/png "modification plus 600 seconds"
Запрет кеширования с помощью сервера Apache

Откройте файл конфигурации сервера Apache httpd.conf и раскомментируйте следующие строчки:
LoadModule expires_module modules/mod_expires.so
LoadModule headers_module modules/mod_headers.so
...
AddModule mod_expires.c
AddModule mod_headers.c
Впишите в .htaccess следующее:
# Запрещение кеширования в этой папке
# Необходимо включение модулей
# mod_headers.c и mod_expires.c
#
# Заголовок Cache-Control
<IfModule mod_headers.c>
Header append Cache-Control "no-store, no-cache, must-revalidate"
</IfModule>

# Заголовок Expires
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "now"
</IfModule>
Необходимые заголовки будут передаваться автоматически, и специально их писать в PHP уже не нужно - кэш уже выключен!
Описание http-заголовка кеширования Cache-control

Кеширование с помощью файла .htaccess

# Разрешение кеширования в этой папке
# Необходимо включение модулей
# mod_headers.c и mod_expires.c
#
# Заголовок Cache-Control
<IfModule mod_headers.c>
Header append Cache-Control "public"
</IfModule>
# Заголовок Expires
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 hours"
#ExpiresDefault "access plus 10 years"
</IfModule>
Кеширование javascript файлов с помощью файла .htaccess

<FilesMatch .*.js$>
ExpiresDefault "access plus 3 days"
</FilesMatch>
Будьте осторожны при кешировании, т.к. при изменении файла, пользователь может получить новый вариант только через 3 дня!

Как заставить html-страницы обрабатывать php-код?

Пропишите в своем файле .htaccess следующие строки:
RemoveHandler .php .htm .html
AddHandler application/x-httpd-php .php .htm .html
Как разместить несколько сайтов на одном виртуальном хостинге?

Чтобы разместить два или более сайтов на одном виртуальном хостинге, вопреки отведенному вам тарифным планом количеству доменов необходимо в файле ".htaccess" прописать следующие строки:
RewriteEngine On
RewriteRule ^newdirectory/ - [L]
RewriteCond %{HTTP_HOST} (www.)?newdomain.ru [NC]
RewriteRule (.*) newdirectory/$1 [L]
Где:
newdirectory/ - папка, в которой будет лежать второй сайт
newdomain.ru - домен, для которого мы делаем перенаправление
Обратите внимание, что при этом у Вас будет единый почтовый аккаунт. Т.е. если, у Вас существует ящик admin@domain.ru, то после подключения домена newdomain.ru у ящика admin@domain.ru появляется второе имя - admin@newdomain.ru. А при создании любого нового ящика (например info), ему автоматически присваиваются два имени - info@domain.ru и info@newdomain.ru.

Поиск страниц больше чем в одном каталоге

Иногда необходимо позволить веб-серверу искать страницы больше чем в одном каталоге.
RewriteEngine on

# во-первых попытаемся найти это в указанном месте/...
# ...и если нашли то заканчиваем поиск:
RewriteCond /your/docroot/dir1/%{REQUEST_FILENAME} -f<br>RewriteRule ^(.+) /your/docroot/dir1/$1 [L]

# во-вторых - попытаемся найти это в pub/...
# ...и если нашли то заканчиваем поиск:
RewriteCond /your/docroot/dir2/%{REQUEST_FILENAME} -f<br>RewriteRule ^(.+) /your/docroot/dir2/$1 [L]
# иначе продолжаем для других директив
RewriteRule ^(.+) - [PT]

Виртуальные хосты пользователей

Если Вы хотите предоставлять адреса www.subdomain.domain.ru для страниц пользователей, Вы можете использовать следующий набор правил для преобразования http://www.subdomain.domain.ru/path во внутренний путь /home/subdomain/path:
RewriteEngine on<br>RewriteCond %{HTTP_HOST} ^www.[^.]+.ru$<br>RewriteRule ^(.+) %{HTTP_HOST}$1 [C]<br>RewriteRule ^www.([^.]+).ru(.*) /home/$1$2

Повреждаются файлы при загрузке на сервер

Если при передаче файлов через формы (при указанном enctype="multipart/form-data") бинарные данные повреждаются, пропишите в /cgi-bin/.htaccess директиву:
CharsetRecodeMultipartForms Off.

Ошибка загрузки SWF файлов.
Ошибки при обращении к страницам, содержащим ключевые слова,
типа $_REQUEST

Такое может происходить из-за установленного модуля <mod_security> в Apache. По умолчанию он блокирует в запросах строки с SQL аргументами и другими потенциально опасными командами.
Возможные сообщения об ошибке:
Forbidden
You don't have permission to access /adm/index.php on this server. Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
или
Запрос небезопасен и был отвергнут.
Добавьте в .htaccess
<IfModule mod_security.c><br>SecFilterEngine Off<br>SecFilterScanPOST Off<br></IfModule>
Для сообщения:
"POST /wp-admin/async-upload.php HTTP/1.1" 406 354 "-" "Shockwave Flash"
можно снять защиту только на загрузку файлов на сервер:
<IfModule mod_security.c><br><Files async-upload.php><br>SecFilterEngine Off<br>SecFilterScanPOST Off<br></Files><br></IfModule>Оптимально снимать защиту только с той папки, в которой это необходимо, не убирая защиту со всего сайта.

Редакции сообщения
0
не в сети 3 месяца
На сайте с
Участник
0
09:02

Чтобы избежать дублирования главной страницы с /index.php, в htaccess пропишем такой редирект:

RewriteCond %{THE_REQUEST} ^.*/index.php <br>RewriteRule ^(.*)index.php$ http://адрес.сайта/ [R=301,L]

Редакции сообщения
0
TheRumz
не в сети давно
На сайте с 14.06.2013
Участник
0
17:50

Много чего не хватает, а так норм написанно up

Редакции сообщения
0

Ваше имя *

Ваш E-mail *

не публикуется

Текст сообщения *