1. Запрет перехода на сайт с определенных сайтов.Для этого существует специальная функция:
referer. Она позволяет получить адрес сайта, с которого сделан переход на фаш сайт (vk, twitter, yandex, google, прочие). Есть вариант применения как на php, так и при помощи .htaccess
PHP
if( strpos( $_SERVER['HTTP_REFERER'], 'запретный_адрес' ) !== FALSE){
print ' текст для вывода ошибки!';
exit();
}
?>
if( strpos( $_SERVER['HTTP_REFERER'], 'запретный_адрес' ) !== FALSE){
header('Location: адрес отправки');
exit();
}
?>
В первом варианте, например, если поставить запрет на яндекс - выведет текст, который вы сами и напишите. Во втором - перенаправит на другой адрес, который вы тоже сами напишине
.HTACCESS
RewriteCond %{HTTP_REFERER} ^https://www\.запретный_адрес\.(.*) [NC]
RewriteRule .* - [F]
RewriteCond %{HTTP_REFERER} ^https://www\.запретный_адрес\.(.*) [NC]
RewriteRule ^/$ https://адрес отправки/
Примеры аналогичные и на пхп, но в первом случае будет перенаправлять по 403-й ошибке forbidden, т.е. ее можно сделать и самому!
2. Блокировка определенных ipВ файл .htaccess внесите запись ниже. Если нужно заблокировать какую нибудь внутреннюю папку в глубине от корня сайта, то закиньте туда файл .htaccess с записью о блокировке. Способ малоэффективен т.к. есть прокси, есть анонимайзеры или как у меня - динамический IP. Но все же стоит привести парочку примеров:
Order Allow,Deny
Allow from All
Deny from xxx.xxx.xxx.xxx
Order Allow,Deny
Allow from All
Deny from xxx.xxx.xxx.xxx, yyy.yyy.yyy.yyy, zzz.zzz.zzz.zzz
В первом случае вы блокируете определенный ip, во втором - через запятую вводите список из нескольких ip
3. Запрет для всехПредставляю комплексное решение: на одном из моих сайтов хранятся файлы, которые можно скачать. Но ссылок нигде нету. Я сам выбираю кому давать их, а кому нет. Во избежание получения листинга(список всех файлов) или взлома этой папки я добавил тут файл .htaccess со строками:
Order Deny,Allow
Deny from all
ErrorDocument 403 https://ваш-адрес_сайта/403.php
ErrorDocument 404 https://ваш-адрес_сайта/404.php
Options -Indexes
Order deny... - блокирует доступ к этой папке для всех и выводит надпись forbiddden (т.е. ошибку 403). В моем случае - отправляет на
специально созданную страницуOptions -Indexes - если нет индексного файла - не дает вывести листинг и тоже отправляет на 403