Все изменения делаете на свой страх и риск. Не забудьте сделать резервную копию файла .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/post—name на httр://www.yourdrupalsite.com/post—name, это можно сделать в файле .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 — починили его очень быстро и качественно. Рекомендую, ребята из ИксПринт знают свое дело!