RewriteEngine On RewriteCond %{HTTP_HOST} ^(?:www\.|)site\.ru$ [NC] RewriteCond %{HTTP:FROM} google|yandex RewriteRule ^(.*)$ http://newsite.ru/$1 [R=301,L]
Поисками индексного файла в каждом каталоге занимается mod_dir и настраивается в DirectoryIndex
А в тех правилах mod_rewrite условие RewriteCond %{REQUEST_FILENAME} !-d проверяет что не запрошен существующий каталог.
Так что если /_site/сайт1/wp-content/ существующий каталог и в нём есть index.php, то mod_dir сделает своё дело и вызовет /_site/сайт1/wp-content/index.php.
/ru/forum/comment/16179414
RewriteRule ^sitemap.xml$ sitemap.php [L,NC] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !(jpg|gif|png|jpe|jpeg)$ RewriteRule . index.php [L]
Просто перенести редирект выше остальных правил.
Достаточно не ставить слеш перед index.php и запрос направит в ту папку, где находится сам htaccess.
Например, в файле /_site/{сайт1}/.htaccess поставить правило
RewriteRule . index.php [L]
Если ничего не подкручивали в RewriteBase, то запрос направит в /_site/{сайт1}/index.php
Так а на самом деле там pics1 или pic1?
И в какие из трёх location ставили этот шаблон?
Начиная с версии Apache 2.4 есть expr
RewriteEngine on RewriteRule ^(.+)\((\d+)\)(\.jpg)$ /$1-$2$3 [L,R=301] RewriteRule ^(.+)\((small)\)((?:-\d+|)\.jpg)$ /$1$2$3 [L,R=301] RewriteCond expr "tolower(%{REQUEST_URI}) =~ /(.+)/" RewriteRule [A-Z][^/]*(small|-\d+)\.jpg$ %1 [L,R=301]
Если есть доступ править настройки VirtualHost, то можно использовать RewriteMap.
В VirtualHost добавить:
RewriteMap lc int:tolower
А в .htaccess
RewriteEngine on RewriteRule ^(.+)\((\d+)\)(\.jpg)$ /${lc:$1}-$2$3 [L,R=301] RewriteRule ^(.+)\((small)\)((?:-\d+|)\.jpg)$ /${lc:$1}$2$3 [L,R=301]
RedirectMatch 301 ^(.+)\((\d+)\)(\.jpg)$ $1-$2$3 RedirectMatch 301 ^(.+)\((small)\)((?:-\d+|)\.jpg)$ $1$2$3
Или
RewriteEngine on RewriteRule ^(.+)\((\d+)\)(\.jpg)$ /$1-$2$3 [L,R=301] RewriteRule ^(.+)\((small)\)((?:-\d+|)\.jpg)$ /$1$2$3 [L,R=301]
RewriteCond %{DOCUMENT_ROOT}/site.%{HTTP_HOST}/$0 -f RewriteRule ^.+\.(css|js|jpe?g|mp4|gif)$ /site.%{HTTP_HOST}/$0 [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^ index.php [L]
Заблокировать прямое обращение к адресам начинающимся с "/site." можно так:
RewriteCond %{THE_REQUEST} " /site\." RewriteRule ^site\. - [F]
Или так
RewriteCond %{ENV:REDIRECT_STATUS} ^$ RewriteRule ^site\. - [F]