Трюки .htaccess

1) Ограничение доступа к контенту.

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

1
2
3
4
5
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www.)?domainname.com/ [nc]

2) Ограничение доступа по user-agent
Блокируем всех пользователей, которые могут причинить вред серверу.

1
2
3
4
5
6
7
8
9
10
11
12
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>

3) Безопасный редирект 301
Чтобы перенаправить посетителя с одной страницы (домена) без ущерба для поисковых роботов.

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

4) Своя страница с ошибками
Чтобы перенаправить посетителя на самодельную 404-страницу

1
2
3
4
ErrorDocument 401 /error/401.php
ErrorDocument 403 /error/403.php
ErrorDocument 404 /error/404.php
ErrorDocument 500 /error/500.php

5) Защита файлов
Чтобы защитить ваши файлы от просмотра, используется следующий код:

1
2
3
4
<Files .htaccess>
order allow,deny
deny from all
</Files>

На этом примере показано, как защитить .htaccess. При попытке просмотра посетитель попадает на страницу 403

6) Перенос на новый домен
Перенаправляем пользователя на новый домен:

1
2
RewriteEngine On
RewriteRule ^(.*)$ http://www.domainname.com/ [R=301,L]

7) Кеширование
Код кеширует посещённые страницы, снижая время загрузки. 86400 — количество секунд, меняйте на своё усмотрение.

1
2
3
FileETag MTime Size
ExpiresActive on
ExpiresDefault "access plus 86400 seconds"

8) Gzip-сжатие
Используйте Gzip , чтобы ваш сайт грузился быстрее.

1
2
3
4
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

9) Убрать папку из URL
Чтобы http://yoursite.com/folder/one изменить на hhttp://yoursite.com/one, добавьте строчку в ваш .htaccess.

1 RewriteRule ^folder/(.+)$ http://www.yourdomain.com/ [R=301,L]

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

1 Options All -Indexes

11) Редирект WordPress-RSS на FeedBurner
Перенаправляем RSS на FeedBurner.

1
2
3
4
5
6
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} !FeedBurner    [NC]
RewriteCond %{HTTP_USER_AGENT} !FeedValidator [NC]
RewriteRule ^feed/?([_0-9a-z-]+)?/?$ http://feeds.feedburner.com/yourfeed [R=302,NC,L]
</IfModule>

12) Защита от спам-ботов
Для пользователей WordPress. При добавлении комментария сервер сравнивает заголовок Referer с «wp-comments-post.php». Если он не совпадает, комментарий не добавится.

1
2
3
4
5
6
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]

13) Удалить расширение файла из URL
Удаляем расширение .php с конца адреса страницы.

1 RewriteRule ^(([^/]+/)*[^.]+)$ /.php [L]

14) Заменить расширение файла
Меняем php на html

1
2
3
RewriteEngine on
RewriteBase /
RewriteRule ^(.*).html$ $1.php [L]

NC — no case — не различать в урлах прописные и строчные буквы
L — last — после этой директивы дальнейший анализ директив RewriteRule останавливается и прочие директивы не исполняются

15) Меняем адрес на более комфортный 
Например, product.php?id=12 на product-12.html

1
2
RewriteEngine on
RewriteRule ^product-([0-9]+).html$ product.php?id=$1

16) Оптимизируем адрес для поисковиков

Наиболее удобным для поисков будет порменять product.php?id=12 на product/ipod-nano/12.html . Данный код отображает адрес с главным ключевым словом.

1
2
RewriteEngine on
RewriteRule ^product/([a-zA-Z0-9_-]+)/([0-9]+).html$ product.php?id=$2

БОНУС

17) Как сделать редирект всех возможных вариантов набора адреса страницы на одну и ту же? Например, нам надо, чтобы страницы

http://www.site.com

http://site.com

http://www.site.com/index.html

http://site.com/index.html

все директились на одну и ту же на http://www.site.com, тогда необходимо прописать:

1
2
3
4
5
6
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^site.com
RewriteRule (.*) http://www.site.com/$1 [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /index.html HTTP/
RewriteRule ^index.html$ http://www.site.com/ [R=301,L]

18) как превратить www-адрес в не-www-адрес?

www.site.com превращаем в site.com

1
2
3
4
RewriteEngine on
Options +FollowSymLinks
RewriteCond %{HTTP_HOST} ^www.site.com$ [NC]
RewriteRule ^(.*)$ http://site.com/$1 [R=301,L]

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

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

Time limit is exhausted. Please reload the CAPTCHA.

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