Начиная с версии 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]
RewriteCond /site.%{HTTP_HOST}/$0 (.+) RewriteCond %{DOCUMENT_ROOT}%1 -f RewriteRule ^wp-content/images/.+\.(css|js|jpe?g|mp4|gif)$ %1 [L]
Если в названии файла там действительно знак вопроса и содержимое %{QUERY_STRING}, то правила будут такие:
RewriteCond %{QUERY_STRING} ^$ RewriteRule ^wp-content/images/.+\.(css|js|jpe?g|mp4|gif)$ /site.%{HTTP_HOST}/$0 [L] RewriteCond %{QUERY_STRING} (.+) RewriteRule ^wp-content/images/.+\.(css|js|jpe?g|mp4|gif)$ /site.%{HTTP_HOST}/$0\%3F%1 [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^ index.php [L]
А ещё раз где проверять наличие файла?
/_www.{имя домена из запроса}/wp-content/images/12323.jpg
RewriteCond %{HTTP_HOST} ^(?>www\.|)(.+) RewriteCond %{DOCUMENT_ROOT}/_www.%1/$0 -f RewriteRule ^wp-content/images/.+\.jpg$ /_www.%1/$0 [L]
Или /wp-content/images/12323.jpg
RewriteCond %{HTTP_HOST} ^(?>www\.|)(.+) RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^wp-content/images/.+\.jpg$ /_www.%1/$0 [L]
RewriteCond %{HTTP_HOST} ^(?>www\.|)(.+) [NC] RewriteRule ^wp-content/images/.+\.jpg$ /_www.%1/$0 [L]
От перемены мест слагаемых сумма не меняется :)
Там через запятую просто список флагов.
NewMoneyMaker, если /razdel.html существующий файл.
DirectorySlash Off RewriteEngine on RewriteCond %{REQUEST_FILENAME}.html -f RewriteRule ^([^/.]+)$ /$1.html [L]
RewriteCond %{REQUEST_URI} !^/http_only/ RewriteCond %{HTTP:X-Forwarded-Proto} !https [OR] RewriteCond %{THE_REQUEST} ^\S+\ /index\.php [OR] RewriteCond %{HTTP_HOST} ^www\. [NC] RewriteRule ^index\.php|(.*) https://site.com/$1 [R=301,L]