1. Приветствуем Вас на неофициальном форуме технической поддержки XenForo на русском языке. XenForo - коммерческий форумный движок от бывших создателей vBulletin, написанный на PHP.

Суперклей "htaccess"

Тема в разделе "OFF-топик", создана пользователем лиса, 16.08.2011.

Загрузка
  1. лиса

    лиса Заблокирован

    Регистрация:
    05.10.10
    Сообщения:
    395
    Симпатии:
    84
    Он может склеивать любые страницы форума. Склеивать необходимо, что бы страницы с одним и тем же содержимым имели один адрес в интернете, а так же для удобного сёрфинга пользователей по Вашему сайту.
    Так, нижеприведённый адрес индексной странички сайта, роботами-поисковиками будет воспринят, как разные странички со своими адресами.
    http://мой_сайт.ru
    http://www.мой_сайт.ru
    http://www.мой_сайт.ru/
    http://www.мой_сайт.ru/index.php
    Получается, что индексная страничка будет иметь четыре адреса, а сайт два имени, с WWW и без.
    Вначале склеим название сайта так, что бы при обращении к сайту с WWW или без него адрес был один, с WWW.
    Код:
    Options +FollowSymLinks
    RewriteEngine On
    RewriteCond  %{HTTP_HOST}  ^мой_сайт\.ru$  [NC]
    RewriteRule  ^(.*)$  http://www.мой_сайт.ru/$1  [R=301,L]
    
    Обозначение [R=301,L] необходимо для робота и означает: перенаправить клиента и отправить ему код статуса 301 (R=301) и сделать это правило последним (L). Одновременно решён вопрос завершающего слэша, теперь он есть.

    Далее займёмся страничкой, которую хотим открыть для посетителя сайта по умолчанию.
    Иначе, посетителю сайта необходимо будет набрать только адрес сайта http://www.мой_сайт.ru
    или
    http://мой_сайт.ru
    или
    http://www.мой_сайт.ru/
    И при этом должна открыться та страничка, которая Вами задумана, как главная. А их, главных, может быть несколько, например,
    portal.php
    и
    forum.php
    Предположим, что главной страничкой должна быть forum.php
    Код:
    RewriteEngine  on
    RewriteBase    /~quux/
    RewriteRule    ^/$  /forum.php [R=301,L]
    RewriteRule    ^index\.htm$  /forum.php [R=301,L]
    RewriteRule    ^index\.html$  /forum.php [R=301,L]
    RewriteRule    ^index\.php$    /forum.php [R=301,L]
    Таким образом, при заходе на сайт без указания главной страницы или не правильном наименовании главной страницы посетитель или робот-поисковик будет перенаправлен на страничку forum.php
    Вывод. После выполнения указанных инструкций в файле htaccess у сайта будет одно наименование и один адрес главной странички, который появится автоматически в адресной строке браузера.
    http://www.мой_сайт.ru/forum.php
    Бывает необходимо, что бы адрес в адресной строке отображался понятным для пользователя. Разберу пример для третьей линейки булки, конкретно для портала. Для начала выберем наименование файла портала – пусть будет portal.php
    Сервис скрипта позволяет создавать динамические странички со своим собственным содержанием. Например, создадим страничку «help». В адресной строке браузера адрес созданной странички будет отображаться так
    http://www.мой_сайт.ru/portal.php?page=help
    Напишем в htaccess следующее правило:
    Код:
    RewriteEngine  on
    RewriteBase    /~quux/
    RewriteRule    ^help\.php$  portal.php?page=help
    Теперь, при наборе в адресной строке браузера
    http://www.мой_сайт.ru/help.php
    пользователь будет перенаправлен на адрес
    http://www.мой_сайт.ru/portal.php?page=help
    Страничка «help» откроется, но, при этом, адрес файла в адресной строке не изменится и будет отображаться пользователю как
    http://www.мой_сайт.ru/help.php

    Ещё пример перенаправления динамических страниц. Предположим, что решили подключить к одной базе два форума. Соответственно, надо как то указать роботам какие разделы форумов принадлежат определённому адресу. Пишем правило для каждого раздела.
    Код:
    Options +FollowSymLinks
    RewriteEngine On
    RewriteBase /
    RewriteCond %{QUERY_STRING} ^f=1$
    RewriteRule ^threads\.php$  http://www.forum-1.ru/threads.php?f=1 [L,R=301]
    RewriteCond %{QUERY_STRING} ^f=2$
    RewriteRule ^threads\.php$  http://www.forum-2.ru/threads.php?f=2 [L,R=301]
    И так далее распределяем разделы из общей базы по физически разным адресам.

    В заключении о том, как создать файл .htaccess. Скопируйте его из файлов форума и поместите его в корне форума. Откройте файл блокнотом, удалите записи и сделайте нужную запись. После чего сохраните в следующем порядке. В меню выберите опцию «сохранить как», затем, в нижней части окна выберите опцию «все файлы», в окне найдите файл .htaccess и выберите его для перезаписи.

    Если файл .htaccess уже имеется в корне сайта, то его надо просто открыть блокнотом и дописать нужные Вам инструкции. СТИРАТЬ ПРЕДЫДУЩИЕ ЗАПИСИ В ФАЙЛЕ НЕЛЬЗЯ.

    Ничего не смогла поделать с упрямым редактором, который добавляет от себя теги URL. Их не должно быть в коде файла .htaccess
     
    Mefodian, 111, exarh и 3 другим нравится это.
  2. Romchik®

    Romchik® The Power of Dreams Команда форума

    Регистрация:
    26.09.10
    Сообщения:
    5 746
    Симпатии:
    5 311
    Версия XF:
    1.5.18
    Плохо старались. Поправил.
     
  3. лиса

    лиса Заблокирован

    Регистрация:
    05.10.10
    Сообщения:
    395
    Симпатии:
    84
    Значит это баг форума, если "старания" зависят от группы пользователей. Я три раза редактировала и удаляла эти тэги и не получилось.
     
  4. лиса

    лиса Заблокирован

    Регистрация:
    05.10.10
    Сообщения:
    395
    Симпатии:
    84
    На этом сайте я не обнаружила название главной страницы сайта, как и название главной страницы форума. Скорее всего, название будет типа index.php
    Хорошо когда можно скрыть название главной страницы от пользователя, но, при этом, для робота-поисковика у главной страницы будет два адреса

    http://www.xf-russia.ru/
    http://www.xf-russia.ru/index.php

    Ситуация становится безвыходной, когда форум надо разместить в корне сайта. Поскольку двух файлов index.php в одной директории не может быть, то придётся «засветить» один из файлов, переименовав его, например, в forum.php.
    С этого момента или раньше пользователь будет помнить, что главная страница форума, это forum.php Слово «forum» понятно, а php или html для пользователя просто тарабарщина какая-то.
    В этом случае помочь может файл .htaccess Запишим в него следующий код
    Код:
    RemoveHandler .html .htm
    AddType application/x-httpd-php .php .htm .html .ru .forum .rum . xen
    
    После чего получим следующие варианты названия главной страницы форума

    forum.ru
    ru.forum
    welcome.forum
    fo.rum
    forum.xen

    Вариантов бесконечно много, просто добавьте нужное Вам расширение во вторую строчку указанного кода файла .htaccess
     
    ANGEL OF FIRE нравится это.
  5. Emily

    Emily Пользователь

    Регистрация:
    29.08.11
    Сообщения:
    16
    Симпатии:
    1
  6. лиса

    лиса Заблокирован

    Регистрация:
    05.10.10
    Сообщения:
    395
    Симпатии:
    84
    Посмотрела в поиске странички со своего сайта и обнаружила, вдобавок, сайты, которые ссылаются на мой. Зашла посмотреть на то, что им понравилось с моего сайта. Оказывается им понравились картинки и не утруждая себя посетители тех сайтов просто взяли адреса картинок с моего сайта и вставили их в свои посты. Ну, и представьте, если с моего сайта будут качать картинки как с крутого файлового обменника, кроме того, неизвестно как среагируют поисковики на ссылки с разных сайтов на мой.
    Решила эту проблему при помощи .htaccess. Для этого в папку где находятся картинки помещаем .htaccess с определённым кодом. Можно разместить .htaccess с таким кодом и в корне сайта, но следует помнить, что правила, указанные в .htaccess, расположенном в корне сайта, распространяются на весь сайт. Да, ещё, если у Вас уже есть файл .htaccess, то ни в коем случае его не надо удалять или переписывать копированием одного файла в другой, иначе код в старом .htaccess будет утерян. В таком случае, правильнее будет открыть .htaccess и дописать в него нужный код.
    Код, который надо написать в .htaccess, для противодействия скачке картинок с Вашего сайта следующий

    Код:
    RewriteEngine on
    RewriteBase /
    ## защита от скачки
    ## проверка не пришел ли юзер с другого сайта (НЕ с сайта http://www.мойсайт.ru)
    RewriteCond %{HTTP_REFERER} !^http://(www.)?мойсайт.ru/.*$ [NC]
    ## прописываем запрет на скачку файлов определенного типа если юзер пришел с чужого
    ## домена, здесь указываем все расширения файлов, которые запрещены для скачки
    RewriteRule .(jpg|gif|png|bmp|swf|rar|avi|zip)$ - [F]
    ## конец защиты от скачки
    
    Как это работает можно посмотреть здесь
    http://www.vizantium.ru/ajax/tema.php?t=253
    Скопируйте адрес понравившейся картинки и вставьте его в адресную строку новой вкладки браузера. Картинку Вы получите. Вы также можете скопировать картинку на свой компьютер. НО если Вы откроете новое окно браузера (не вкладку) и не загружая сайта вставите адрес картинки в адресную строку нового окна, то получите ответ сервера об ошибке - такой страницы нет
     
    ANGEL OF FIRE нравится это.
  7. URARTU

    URARTU Местный

    Регистрация:
    14.11.11
    Сообщения:
    119
    Симпатии:
    14
    Версия XF:
    1.2.0
    Бред какой-то...
     
  8. лиса

    лиса Заблокирован

    Регистрация:
    05.10.10
    Сообщения:
    395
    Симпатии:
    84
    Бывает так, что появляется необходимость закрыть сайт или раздел от роботов поисковиков. Если использовать для закрытия файл robots.txt, то после закрытия роботы могут ходить по сайту ещё несколько суток, пока не прочтут robots.txt. Отдельные роботы могут вообще игнорировать файл robots.txt. Помочь в обоих случаях может файл .htaccess. Для этого необходимо записать в файл код, который принудит робота прочесть файл robots.txt при первом после закрытия сайта визите робота поисковика. В ниже приведённом коде файла .htaccess роботу с Mail.ru, при заходе на сайт, предписывается ознакомится с содержанием файла robots.txt, в котором необходимо написать строчку о запрете индексирования для робота с Mail.ru
    Код:
    RewriteEngine On
    RewriteBase /
    RewriteCond %{HTTP_USER_AGENT} ^Mail\.ru/1\.0$
    RewriteCond %{REQUEST_URI} !^robots\.txt$
    RewriteRule .* - [G]
     
  9. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    Это все называется антиличем средствами htaccess. Это все давно известно и, к сожалению, имеет один серьезный недостаток. Дело в том, что такая конструкция блокирует загрузку всех файлов с расширениями, указанными в строке RewriteRule, если реферер отличается от вашего сайта (к слову, это не помеха для того же wgat, например :) ). Но, если мы заблокируем все картинки и флеши, то внешний вид сайт в поисковике может в результате превратиться в кашу или просто не тот, который ожидается. Поэтому для тех файлов, которые все же требуется показывать без обязательного реферера, а это фон и другие стилевые изображения и флеши, нужно прописать перед RewriteRule еще одну строку:
    Код:
    RewriteCond %{REQUEST_URI} !^/background.png [NC]
    Можно прописывать их столько, сколько необходимо. Это правило исключает из обработки ссылку на конкретную картинку
    Код:
    http://мойсайт/background.png
    .

    Особо ушлые роботы и просто ребята с нехорошими намерениями могут в некоторых случаях прочитать файл .htaccess. Поэтому на всякий случай лучше запретить прямо в нем доступ к нему извне.
    Код:
    <Files .htaccess>
    order allow,deny
    deny from all
    </Files>
     
    ANGEL OF FIRE и лиса нравится это.
  10. лиса

    лиса Заблокирован

    Регистрация:
    05.10.10
    Сообщения:
    395
    Симпатии:
    84
    Я не претендую на новшество, а эксклюзивный материал не стала бы публиковать. НО есть практический результат применения такой защиты, поэтому разместила материал.
    С поисковиками проблем не было. Они скачивают картинки и фоны находясь на моём сайте. Повторю суть защиты. Я не преследовала цель запретить посетителям моего сайта скачку файлов с сайта. Отсюда, мне не интересно каким способом будет скачана картинка с моего сайта, тем более, что я сама в своё время взяла где-то эти картинки. Запрет я установила для тех, кто размещает картинки с моего сайта путём размещения на сторонних сайтах ссылок на них. Как результат, посетители других сайтов не преднамеренно скачивают картинку с моего сайта при просмотре другого сайта. Вот картинка на том, другом, сайте понравилась тамошним посетителям и они картинку с моего сайта разместили ещё в других местах инета и всё через ссылку на мой сайт. Так, теоретически можно сайт сделать полностью неработоспособным, а практически админ может и не подозревать о псевдопосетителях своего сайта и начинает бороться с медленной работой сайта путём замены тарифного плана.
     
  11. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    Это и есть антилич. Только не 100%, а частичный. Антилич как раз и подразумевает недоступность скачивания по прямым ссылкам. Конечно, даже этот метод достаточно полезный, чтобы не перегружать сайт бесполезными запросами.
     
    лиса нравится это.
  12. лиса

    лиса Заблокирован

    Регистрация:
    05.10.10
    Сообщения:
    395
    Симпатии:
    84
    Добавлю ещё код для .htaccess и картинок. Если на Вашем сайте разрешено пользователям закачивать на сервер свои картинки, то этим могут воспользоваться злоумышленники и закачать в каталог с картинками свой зловред. Иначе файлы имеющие иное расширение чем у картинок.
    Вначале отменим обработчик для файлов с определённым расширением.
    Код для .htaccess будет таким
    Код:
    RemoveHandler .html .htm .shtml .php .cgi .exe .pl .asp .aspx
    Затем запретим скачку всех файлов кроме файлов с картинками.
    Код для .htaccess будет таким
    Код:
    <Files "\.(php|html|htm|cgi|exe|pl|asp|aspx|shtml|xml)$">
    order allow,deny
    deny from all
    </Files>
    ВНИМАНИЕ! Файл .htaccess с приведёнными кодами следует размещать в каталог с картинками, в котором не должно быть файлов для обработки картинок, потому что файлы работать не будут как зловреда так и Ваши. Это правило относится и ко всем вложенным каталогам. Поэтому ни сам каталог с картинками с файлом .htaccess, ни вложенные каталоги не должны иметь других файлов кроме как с картинками.
     
    ANGEL OF FIRE нравится это.
  13. Yoskaldyr

    Yoskaldyr Пользователь

    Регистрация:
    27.09.10
    Сообщения:
    1 921
    Симпатии:
    1 163
    Версия XF:
    1.0.4
    также добавлю - что не все брозеры/прокси корректно передают реферер (привет анонимайзерам и опере), т.е. с такими манипуляциями и пользователи сайта не увидят картинок находясь на этом сайте. И поисковики кстати тоже не увидят - а картиночные боты кстати дают хороший поисковый трафик для сайта (например гугло-картинки и яндекс-картинки).
    Это самая распространенная ошибка считать что реферер является хоть какой-то защитой от скачки на других ресурсах. Хотя для очень небольшого сайта с рассчитываемой аудиторией - может прокатить.
     
  14. лиса

    лиса Заблокирован

    Регистрация:
    05.10.10
    Сообщения:
    395
    Симпатии:
    84
    У роботов нет проблем со скачкой картинок. Ежеле они размещают у себя только ссылки на картинки, то разницы нет между халявщиками людьми и ботами.
    В чём смысл рекламы картинками с сайта, если они совсем не по тематике сайта!? Один пользователь поздравил другого и прикрепил к посту картинку, а форум и сайт не о картинках и фотошопе.
    С теми же кто ходит под прокси нам не по пути - каков IP и браузер таков и сервис получат на сайте.

    Таким образом и как правило админы и приходят к запрету размещения картинок на своём сайте. Поэтому лучше не ограничивать своих пользователей, а пользователи с других сайтов пусть смотрят свои картинки.

    Погоня за популярностью сайта должна тоже быть разумной. Так недавно появились взломы браузера оперы-мини. Была версия, что злоумышленники ломали сайты и размещали там пере адресацию на фишинговый сайт. Может это и было. Но было и другое. Админы сами размещали на своих сайтах зловред за процент от прибыли и для популярности своего сайта среди мобильников. Конечно, они не знали что имеют дело со злоумышленниками.
     
  15. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    Насколько я знаю, поисковики очень даже любят и сами картинки утаскивать. Цели самые разные. Вплоть до анализа EXIF со всех картинок, сопоставления ников и прочего, а в результате получение достаточно широкого спектра параметров идентификации пользователя. В итоге вроде и не регистрировался пользователь нигде, кроме как на паре форумов под разными никами, да выложил несколько раз свои фотографии и там и там, и тут бац - ему приходит приглашение (или показывается реклама) посетить классный ресторан, в котором он когда-то был, упомянул об этом на каком-то форуме, а свое мыло случайно засветил на другом. Ведь не сложно по фотографиям с одного фотоаппарата (а в EXIF ведь еще и серийный номер тушки может быть) совместить разные ники с разных форумов, а к этим никам привязана еще какая-то информация. В общем все мы живем в уже ну очень публичном мире. Хорошо хоть веб-камер еще в туалетах нет (и то не везде).

    Ладно, это все лирики и к делу относится мало. Я уже упоминал, что защита по рефереру - это некоторый процент защиты. А также я упустил, что действительно не все браузеры корректно работают с реферером, что может создать проблемы для пользователей. Тем более, что большая часть движков обычно по кукам отслеживает авторизованность и вообще деятельность пользователей.
     
  16. лиса

    лиса Заблокирован

    Регистрация:
    05.10.10
    Сообщения:
    395
    Симпатии:
    84
    С туалетами, это всё уже есть :) А по поводу Ваших подозрений по применению картинок добавлю, что на своём форуме всё сделала, чтоб робот не ходил в личный кабинет пользователя и ссылки закрыла и мета тэг поставила. Яндекс и не ходит, а гугль продолжает делать попытки. Спасает только запрет всем гостям посещать личный кабинет пользователя сайта. Но это, как бы, развитые роботы, а кроме них ходят и другие, которые вообще игнорируют любой запрет для робота, что я наблюдала когда сайт был закрыт для индексации.

    Далее по сути. Возможно, что есть проблемы, поскольку любое ограничение даёт как плюсы так и минусы. Я пробовала скачивать картинки заходя на свой сайт в качестве гостя. Проблем не было. Необходимо было вначале просто посетить сайт гостем, получить куки и можно скачивать картинки. Опять же, если у посетителя отключены куки, ява, может и картинки, то это его проблемы, поскольку свои единоличные интересы он противопоставляет интересам всех пользователей сайта
     
  17. ANGEL OF FIRE

    ANGEL OF FIRE Модератор

    Регистрация:
    06.11.11
    Сообщения:
    395
    Симпатии:
    180
    Версия XF:
    1.1.3
    Всё это хорошо конечно, но лучше уж если так надо антилич поставить, то это делать при настройке nginx.

    А его на сервер ставить можно и нужно. В общем полезная штука.

    Вопервых и быстрее будет, и нагрузка не такая. А так .htaccess может распухнуть до неузноваемости.
     
    Yoskaldyr нравится это.

Поделиться этой страницей