Переменная %{REQUEST_URI} не содержит GET параметры. Все агрументы находятся в %{QUERY_STRING}.
RewriteCond %{REQUEST_URI}?%{QUERY_STRING} !^/index\.php\?id=79$ RewriteRule ^(.*)$ https://site.ru/$1 [L,R=301]
Переменная %{THE_REQUEST} содержит полную строку запроса "GET /index.php?id=79 HTTP/1.1"
RewriteCond %{THE_REQUEST} "! /index\.php\?id=79 " RewriteRule ^(.*)$ https://site.ru/$1 [L,R=301]
[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]