Все изменения делаете на свой страх и риск. Не забудьте сделать резервную копию файла .htaccess.

1.Оптимизация за счет использование кэша браузера

Чуть ранее я писал о мощном средстве кеширования данных в Drupal6, там также  изменяли файлик .htaccess. Сейчас приведу еще один способ.

 Приведенный ниже код улучшает кэширование браузером статических файлов. При повторном запросе к файлу, который не изменился клиент получит HTTP-заголовок 304 (Not Modified), а не содержимое файла.

FileETag MTime Size

<ifmodule mod_expires.c>

  <filesmatch «\.(jpg|gif|png|css|js)$»>

       ExpiresActive on

       ExpiresDefault «access plus 6 month»

   </filesmatch>

</ifmodule>

2.Удалить /node/ (или что-то другое) из пути в адресе Drupal

Если вы не используете модуль pathи pathauto, то по умолчанию адреса материалов в  Drupal имеют следующий вид: httр://www.yourdrupalsite.com/node/123
Чтоб не выводить слишком длинный и непонятный путь, можно его немного подсократить, а именно убрать
nodeв файлике .htaccess следующим образом:

<?phpRewriteRule ^node/(.+)$ httр://www.yourdrupalsite.com /$1 [R=301,L]?>

Теперь адреса будут выглядеть так: httр://www.yourdrupalsite.com/123

3.Перенаправляем RSS поток Drupal на feedburner с использованием .htaccess

Периодически вебмастера сталкиваются со сложностями при используют feedburner. А все потому, что проблема в том, что приходится руками исправлять файлы шаблонов, но приведенный ниже хак поможет сохранить Ваше время. В строке 6, приведенного кода нужно вставить Ваш код полученный от Feedburner

<IfModule mod_rewrite.c>

 RewriteEngine on

 RewriteCond %{HTTP_USER_AGENT} !FeedBurner    [NC]

 RewriteCond %{HTTP_USER_AGENT} !FeedValidator [NC]

 RewriteRule ^feed/?([_0-9a-z-]+)?/?$ httр://feeds2.feedburner.com/your_code[R=302,NC,L]

</IfModule>

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

5.Перенаправляем с одного URL на другой

Этот хак достигается поутем отдачи http-заголовка 301 (Moved Permanently, перемещен навсегда). Этот хак пригодится, если вам потребуется перенаправить пользователей с адреса httр://www.yourdrupalsite.com/2010/09/28/postname на httр://www.yourdrupalsite.com/postname, это можно сделать в файле .htaccess так:

RedirectMatch 301 /([0-9]+)/([0-9]+)/([0-9]+)/(.*)$ httр://www.yourdrupalsite.com/$4

Аналогичные функции в Drupal можно выполнить с использованием модулей PathAuto и GlobalRedirect

6.Перенаправление пользователя на страницу-заглушку

Если Вас по каким-либо соображениям не устраивает стандартная страничка обслуживания в Drupal, создайте свою и пропишите в файле .htaccess  адрес расположения странички. Для этого замените в строке 2 приведенного ниже кода maintenance.html на название своего файла. А в строке 3 впишите свой IP-адрес, чтобы вас не перекидывало на эту заглушку. 302-редирект обычно используется чтобы поисковые системы индексировали содержимое временных страниц.

RewriteEngine on

RewriteCond %{REQUEST_URI} !/maintenance.html$

RewriteCond %{REMOTE_ADDR} !^123\.123\.123\.123

RewriteRule $ /maintenance.html [R=302,L]

7.Антиспам: запрет комментирования если отсутствует referrer

Данный хак поможет избавиться от излишне навящивых спам-ботов. Согласно статистическим данным, большинство спам-ботов не передают заголовок  referrer(http-запрос, содержащий адрес страницы, откуда состоялся переход на вашу страничку). Код проверяет referrer и блокирует отправку комментария если отсутствует referer при обращении к пути /comment/reply/. В строке 4 необходимо вписать домен своего сайта.

RewriteEngine On

RewriteCond %{REQUEST_METHOD} POST

RewriteCond %{REQUEST_URI} !^.*/comment/reply/*

RewriteCond %{HTTP_REFERER} !.*yourdrupalsite.com.* [OR]

RewriteCond %{HTTP_USER_AGENT} ^$

RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]

8.Защита сайта от «хотлинков»

Хотлинк — это когда одни сайты используют файлы, размещенные на других сайтах, с целью сэкономить собственный серверный трафик, который далеко не бесплатен при наплыве пользователей.  Чтоб Ваш сайт не попал в число таких доноров нужно будет в файле .htaccess провести операции схожие на те, что мы провели в пункте Антиспам.

RewriteEngine On

#Замените ?yourdrupalsite\.com/ адресом вашего сайта

RewriteCond%{HTTP_REFERER} !^http://(.+\.)? yourdrupalsite\.com/ [NC]

RewriteCond %{HTTP_REFERER} !^$

#Замените /images/nohotlink.jpg путем к своей картинке, можно использовать какой-нибудь смешной и остроумный демотиватор

RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpg [L]

9.Разрешить логирование под adminом только с выделенного списка IP-адресов

Хотите максимальной защиты своего сайта на Drupal? Нет проблем! Ограничьте список IPадресов с которым разрешено логиниться под админом! В приведенном ниже коде нужно только вставить свой IP в строке 2.

RewriteCond %{REQUEST_URI} ^/admin/

RewriteCond %{REMOTE_ADDR} !123.123.123.123

RewriteRule  .*    [F]

10.Блокирование IP-адресов спамеров

Просекли спам-ботов, выявили их IP-адреса?  В бан их всех! Хак поможет заблокировать доступ с этих адресов. Внесите IP-адрес спам-ботов в строке 3. Данный список можно расширить добавив строки deny from xxx.xx.xxx.xxx.

<Limit GET POST>

order allow,deny

deny from 200.49.176.139

allow from all

</Limit>

Ну вот и все. Надеюсь данные приемы будут Вам полезны. Да, для некоторых пунктов имеются готовые модули, но!!! Модули съедают системные ресурсы сайта, а следовательно влияют на его быстродействие. Поэтому приведенные выше 10 хаков помогут не только обезопасить ваш Drupal, но и при этом не сказаться отрицательным образом на его быстродействии!!! Даже повысить его путем кеширования и сжатия данных!

Кстати, у меня недавно сломался принтер. Обратился в ремонт принтеров Xerox — починили его очень быстро и качественно. Рекомендую, ребята из ИксПринт знают свое дело!