Попались на глаза «10 отличных трюков с .htacces для Вордпресса», решил применить это к Друпалу.
Внимание!
Разумеется, я ничего не проверял. Перед изменением файла .htaccess не забудьте сделать его резервную копию. Я не отвечаю за работоспособность вашего сайта после исполнения этих трюков.
1 — Перенаправляем RSS поток Drupal на feedburner с использованием .htaccess
Почему некоторые вебмастера не используют feedburner? Ведь это такой замечательный инструмент для контроля за читателями RSS вашего сайта. Наверное проблема в том, что приходится руками исправлять файлы шаблонов, но этот трюк поможет сохранить Ваше время. Не забудьте исправить в строке 6 на Ваш код
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} !FeedBurner [NC]
RewriteCond %{HTTP_USER_AGENT} !FeedValidator [NC]
RewriteRule ^feed/?([_0-9a-z-]+)?/?$ httр://feeds2.feedburner.com/vash_kod[R=302,NC,L]
</IfModule>
2 — Удалить /node/ (или что-то другое) из пути в адресе Drupal
По умолчанию адреса материалов Drupal отображаются так: httр://www.drupal.ru/node/777
Но не все понимают что такое node и зачем оно в адресе. Это можно исправить с помощью .htaccess
<?phpRewriteRule ^node/(.+)$ httр://www.drupal.ru/$1 [R=301,L]?>
Теперь адреса будут выглядеть так: httр://www.drupal.ru/777
П р и м е ч а н и е. Разумеется, Друпалу это не надо - он имеет развитую систему создания адресов с помощью модуля Path, мощь которого многократно увеличивается путем установки модуля PathAuto.
3 — Оптимизация за счет использование кэша браузера
Очень хороший путь оптимизации сайта — это использование кэша браузера. Этот код улучшает кэширование браузером статических файлов. При повторном запросе к файлу, который не изменился клиент получит HTTP-заголовок 304 (Not Modified), а не содержимое файла.
<ifmodule mod_expires.c>
<filesmatch "\.(jpg|gif|png|css|js)$">
ExpiresActive on
ExpiresDefault "access plus 1 year"
</filesmatch>
</ifmodule>
4 — Сжатие статических данных
Этот код уменьшит объём данных передаваемых между сервером и пользователем за счет их сжатия.
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.drupal.ru/2009/03/25/name-of-the-post на httр://www.drupal.ru/name-of-the-post, это можно сделать как-то так:
RedirectMatch 301 /([0-9]+)/([0-9]+)/([0-9]+)/(.*)$ httр://www.domain.com/$4
Еще в Друпале можно использовать модули PathAuto и GlobalRedirect
6 — Антиспам: запретить комментирование если отсутствует referrer
Метод построен на том, что многие спам-боты не передают referer (заголовок http-запроса, содержащий адрес страницы, откуда производится переход) когда отправляют спам. Этот код проверяет referrer и блокирует отправку комментария если отсутствует referer при обращении к пути /comment/reply/. Не забудьте в строке 4 вписать домен своего сайта.
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} !^.*/comment/reply/*
RewriteCond %{HTTP_REFERER} !.*drupal.ru.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]
7 — Перенаправить пользователя на страницу-заглушку
При обслуживании сайта желательно показать посетителям временную страницу-заглушку. Замените в строке 2 maintenance.html на название вашего файла. В строке 3 впишите свой IP, чтобы вас не перекидывало на эту заглушку. 302-редирект используется чтобы поисковые системы не проиндексировали содержимое временной страницы.
RewriteCond %{REQUEST_URI} !/maintenance.html$
RewriteCond %{REMOTE_ADDR} !^123\.123\.123\.123
RewriteRule $ /maintenance.html [R=302,L]
Разумеется, можно делать тоже самое из админки Drupal (admin/settings/site-maintenance)
8 — Защита сайта от «хотлинков»
Хотлинк — это использование файлов, размещенных на вашем сайте на страницах других сайтов с целью сэкономить свой серверный трафик. Тема у нас уже обсуждалась, повторим. Суть аналогична таковой из трюка 6: левый реферрер – пошел вон.
#Замените ?drupal\.ru/ адресом своего сайта
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?drupal\.ru/ [NC]
RewriteCond %{HTTP_REFERER} !^$
#Замените /images/nohotlink.jpg путем к своей картинке, где нарисована волосатая негритянская задница
RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpg [L]
9 — Разрешить доступ к admin-ке только с вашего IP
Дополнительной защитой сайта от взлома может служить ограничение списка адресов, с которых разрешено заходить в админку. Не забудьте вставить свой IP в строке 2.
RewriteCond %{REMOTE_ADDR} !123.123.123.123
RewriteRule .* - [F]
10 — Блокирование IP спамеров
Часто спам-боты ходят с одних и техже IP. Трюк поможет блокировать доступ с этих адресов. Внесите адрес спамера в строке 3. Можно расширить список заблокированных адресов добавив строки deny from xxx.xx.xxx.xxx.
order allow,deny
deny from 200.49.176.139
allow from all
</Limit>
Обновление Исправлен код в 9 трюке - теперь можно реально запретить доступ к админке с левых ip-адресов.
Комментарии
спасибо
только вот прочитал для вордпресса, а тут Али, аналог для друпала
спасибо, буду пробовать
Насчет фидбурнера не сосем понял
Спасибо автору - действительно полезная информация
Фидбёрнер позволяет знать точное число "подсписчиков" и другую статистику касательно использования вашего rss-потока.
определенно полезно!
Благодраю!!
Али, я не понял то, как автоматически фидбернер будет узнавать о моих фидах
или нужно руками сначало занести все фиды в фидбернер?
спасибо, Али
> или нужно руками сначало занести все фиды в фидбернер?
Да. Почитайте на сайте фидбернера о его преимуществах.
«1 — Перенаправляем RSS поток Drupal на feedburner с использованием .htaccess»
Модуль feedburner сделает вам это
по-зеленомубез правки ядренных файлов«2 — Удалить /node/ (или что-то другое) из пути в адресе Drupal»
Пробовать не буду, ибо страшно. Но на вид код не рабочий.
А ссылки на стрницах в < a href=" " > он тоже исправит?
И в друпале для этого есть [ru-api=custom_url_rewrite_inbound]custom_url_rewrite_inbound[/ru-api] + [ru-api=custom_url_rewrite_outbound]custom_url_rewrite_outbound[/ru-api]
в данном пункте 100% ошибка.
вопервых код для htaccess и скобки <?php ?>не нужны , во вторых что то там еще надо. это так чисто на друпал не натянется.
Спасибо Алексей.
У тебя сегодня творческий порыв:)
Спасибо.
fasdalf@fasdalf.ru, согласен, внес примечание к 2.
Модуль feedburner, без сомнения, полезен, но никто и не говорит, что какое-то решение единственно правлиьное. Каждый волен выбрать свой путь.
Очень полезно, 10 мелочей и каждая приятная!:)
AuthGroupFile /dev/null
AuthName "Drupal Says No "
AuthType Basic
<LIMIT GET>
order deny,allow
deny from all
allow from xxх.xxх.xxх.xxх
</LIMIT>
Запрещает ВСЕМ не с этого айПи доступ ко ВСЕМУ сайту.
Блин. Фак. По ходу, в вордпрессе админка в отдельной директории и эта директива для отдельного файла .htaccess
а rss?
Спасибо, очень полезно
Я бы избегал общения с апачем,т.к. любые строчки туда - это ещё пару тысячных секунд обращения к схеме юзер-апач-цмс-юзер
Ух ты! Какая классная вещь! Спасибо!
Кстати, тему в доки к htaccess было-бы неплохо подшить.
Спасибо! Для общего развития бесспорно полезно.
Пункт про доступ к админке с 1 айпи поправлен.
[quote="Химический Али"]9 — Разрешить доступ к admin-ке только с вашего IP
Дополнительной защитой сайта от взлома может служить ограничение списка адресов, с которых разрешено заходить в админку. Не забудьте вставить свой IP в строке 2.
RewriteCond %{REMOTE_ADDR} !123.123.123.123
RewriteRule .* - [F] [/quote]
У кого нибудь это работает ? У меня почему то нет.. (
UPD
Замутил вобщем так, работает!
RewriteCond %{QUERY_STRING} ^/?q=user.*
RewriteCond %{REMOTE_ADDR} !88.88
RewriteRule /*$ http://www.fsb.ru/ [L,R]
Ребят, а как реализовать такую вещь...
Есть путь
http://сайт.ру/node/6
как сделать чтоб было http://сайт.ру/node/6/index.html ?
Понятно, что надо прописать некие правила в .htaccess, но как заставить сайт выдавать ссылки в таком виде?
Балда, откройте для себя модули Path и PathAuto.
Спасибо, сюда б добавил, как связать www.сайт.ru и сайт.ru в htacess.
Ссылка на пост
В файле .htaccess (файл находится в корне сайта) после:
RewriteEngine on
добавляем:
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]
Как работает такая переадресация:
http://www.example.com → http://example.com
http://www.example.com/* → http://example.com/*
По восьмому пункту ... Оно, конечно, в зависимости от уровня паранои неприятно, когда юзают ваши имэджи, но для SEO эта опция будет носить обратно-не мудрый эффект. Хотлинки в большинстве ситуаций передают определенный вес по адресу(а если еще и alt'ы прописаны, то и описун довесок даст; + окружающий текст — проверено), тобишь — пусть постят на здоровье.
Спасибо! Кое что подтянул
Расшифруйте п.5
Я та думал что на этом форуме самые умные люди, или хотя бы что нибудь понимают в программирование, оказывается одни придурки, как сразу спасибо !! С начало проверьте скрипт !!
Первый пункт левый ! Тупа CTRL+C с другово сайта!!
Не бойся, ты тоже теперь один из нас
добрый день
требуется разрешить доступ только с определенных IP 192.168.0.1 - 192.168.10.0
написал следующие
order allow,deny
deny from all
allow from 192.168.1
allow from 192.168.2
allow from 192.168.3
....
allow from 192.168.10
правильно ли я написал?
есть ли другие способы заблокировать доступ к содержимому сайта?
и как можно проверить действует ли htaccess
Спасибо. Борьба со спамом нынче очень актуальна.
Пункт 9 неточен.
Во-первых, нужно уточнить, что эти правила надо вставлять ДО основных правил переадресации. Многие этого не знают, и удивляются - а почему у них не работает? А потому, что директива L в основной переадресации закрывает парсинг дальнейших правил.
И во-вторых, если у вас сайт многоязычный, то лучше сделать такое правило
RewriteCond %{REQUEST_URI} admin/
RewriteCond %{REMOTE_ADDR} !ххх.ххх.хххюххх
RewriteRule .* - [F]
Потому что в многоязычном сайте админка доступна по адресу
/ru/admin например.
Али, респектище тебе. Очень полезная и актуальная информация. В закладки, однозначно.
Хочу перенаправить в директорию drupal6
RewriteEngine On
RewriteRule ^$ /drupal6/ [R=301,L]
</IfModule>
Работает, но теперь пользователи видят адрес http://mysite.ru/drupal6/ а нужно сделать http://mysite.ru
попробовал вставить
RewriteRule ^drupal6/(.+)$ http://mysite.ru/$1 [R=301,L]
но тогда сайт не грузится вообще
а у меня почему то не работает доступ к admin-ке только с вашего IP((( всё равно заходит с любого адреса.
У меня правда 2 ip адреса...может не так пишу?(
RewriteCond %{REQUEST_URI} ^/admin/
RewriteCond %{REMOTE_ADDR} !***.***.***.***
RewriteCond %{REMOTE_ADDR} !***.***.***.***
RewriteRule .* - [F]
подскажите пожалуйста
спасибо, очень полезно
Спустя год но может кому пригодиться:
RewriteCond %{REMOTE_ADDR} !(192.168.1.1|192.168.0.1|192.168.0.25)
RewriteRule .* - [F]
RewriteCond %{REQUEST_URI} ^/admin/
RewriteCond %{REMOTE_ADDR} !123.123.123.123
RewriteRule .* - [F]
Это неплохой способ защититься, но попробуйте после этих правил зайти на:
http://ваш_сайт/Admin
http://ваш_сайт/ADMIN
http://ваш_сайт/adMin
и.т.д
ну я думаю все в курсе про [NC], или нет? я у себя в блоге описывал, надо пользуйтесь