Если .htaccess в корне сайта.
RewriteEngine On RewriteCond %{HTTP_REFERER} idilesom\.ru RewriteRule ^pics/ / [R=301,L]
Если .htaccess в папке /pics/.
RewriteEngine On RewriteCond %{HTTP_REFERER} idilesom\.ru RewriteRule ^ / [R=301,L]
Это не сработет если перед Apache стоит Nginx, который самостоятельно раздаёт статические файлы и не передаёт такие запросы на Apache. Ну и когда браузер клиента реферер не передаёт тож работать не будет.
https://habr.com/company/sprinthost/blog/129560/
RewriteRule передается не ссылка, а только путь до запрошенного файла.
GET параметры находятся в %{QUERY_STRING}.
RewriteCond %{QUERY_STRING} ^id_article=1$ RewriteRule ^index\.php$ http://site.ru/? [R=301,L]
Ну и ставить выше остальных правил сразу после RewriteEngine On.
rewrite ^/page2\.html$ /page1.html;
Можно ставить прямо в блоке server.
Строка с которой работает RewriteRule не содержит GET параметры.
Метасимвол ^ соответствует началу строки.
Ну там же два разных режима работы: обычное строковое значение или регулярное выражение.
Т.е. если условие начинается с "~*", то всё что следом это регулярное выражение иначе это условие с обычным строковым значением.
map "$whitelist:$http_user_agent" $zakos_pod_good_bot { default 0; ~*^0:.*yahoo 1; ~*^0:.*yandex 1; ~*^0:.*google 1; ~*^0:.*msnbot 1; ~*^0:.*bingbot 1; ~*^0:.*mail 1; }
map $whitelist:$http_user_agent $zakos_pod_good_bot { default 0; ~*^0:.*(yandexaccessibilitybot|yandexdirect|yandeximages|yahoo|mediapartners-google|yandexbot|googlebot|msnbot|bingbot|mail).* 1; }
Перед регулярным выражением ставится символ “~”, если при сравнении следует учитывать регистр символов, то ставятся символы “~*”.
Что-то похожее было пару месяцев назад /ru/forum/917580
Если есть доступ править httpd.conf, то для списка страниц удобнее rewritemap
RewriteMap доступен в контексте <VirtualHost>, а не .htaccess
Если без RewriteMap, то как-то так:
RewriteCond expr "-R '1.1.1.1' || -R '2.2.2.2' || -R '3.3.3.3'" RewriteCond "$1 \ page1 => new-page1 \ page2 => new-page2 \ " "^(\S+) .*? \1 => (\S+)" RewriteRule ^(page1|page2)\.html$ /%2.html [L]
Просто нужно внимательно и не спеша читать условие задачи. Там нет // перед site.ru
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /https:/site\.ru(/.*)?\ HTTP RewriteRule ^.*$ https://site\.ru%1 [R=301,L]
Или так
RewriteRule /site\.ru/(.*) https://site.ru/$1 [R=301,L]
А если это правило поставить в самое начало файла сразу после RewriteEngine On