GrabDuck

16 наиболее полезных трюков .htaccess

:

Файл .htaccess — очень полезный файл, который кроет в себе массу возможностей. Как защитить контент , как редиректить с одной страницы или домена на другой, как менять расширение с php на html и как кешировать страницы — смотрим в продолжении. Перед началом экспериментов не забудьте сохранить копию старого файла.

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

Options +FollowSymlinks
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www.)?domainname.com/ [nc]
RewriteRule .*.(gif|jpg|png)$ http://domainname.com/img/stop_stealing_bandwidth.gif[nc]

2) Ограничение доступа по 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>

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

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

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

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

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

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

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

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

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

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

FileETag MTime Size
ExpiresActive on
ExpiresDefault "access plus 86400 seconds"

8) 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

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

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

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

Options All -Indexes

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

<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». Если он не совпадает, комментарий не добавится.

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 с конца адреса страницы.

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

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

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

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

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

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

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

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

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, тогда необходимо прописать:

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

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

источники:
http://perishablepress.com/press/2006/01/10/stupid-htaccess-tricks/
http://roshanbh.com.np/2008/03/url-rewriting-examples-htaccess.html
http://roshanbh.com.np/2008/02/hide-php-url-rewriting-htaccess.html

Читателям также нравится: