Обратная косая черта "\" в конце строки указывает, что директива продолжается следующую строку.
Для удобства можно поделить длинную строку RewriteCond "%2 site1.ru => google.ru site2.ru => yandex.ru " "^(\S+) .*? \1 => (\S+)" на несколько более коротких.
Между обратной косой чертой и концом строки не должно быть других символов или пробелов.
httpd configuration files contain one directive per line. The backslash "\" may be used as the last character on a line to indicate that the directive continues onto the next line. There must be no other characters or white space between the backslash and the end of the line.
Если есть доступ править httpd.conf, то для списка доменов удобнее rewritemap
RewriteMap доступен в контексте <VirtualHost>, а не .htaccess
AlekseiD: Сайт статический на html. многие внутренние ссылки имеют вид site.com/?p=715, но по факту, когда кликаешь на данную ссылку, сайт отдает 404 ответ. Но в данной папке есть файл index.html (полный путь будет site.com/?p=715/index.html)
Переписывать весь код добавляя к каждой ссылке "/index.html" не представляется возможным, так как на сайте более 4K страниц.
Т.е. в корне сайта есть папка с именем "p=715" и в ней есть index.html
RewriteCond %{REQUEST_URI} !^/index.php?id=79/$
RewriteRule (.*) https://новый сайт/$1 [L,R=301]
Переменная %{REQUEST_URI} не содержит GET параметры. Все агрументы находятся в %{QUERY_STRING}.
Переменная %{THE_REQUEST} содержит полную строку запроса "GET /index.php?id=79 HTTP/1.1"
[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 configuration files contain one directive per line. The backslash "\" may be used as the last character on a line to indicate that the directive continues onto the next line. There must be no other characters or white space between the backslash and the end of the line.
Если есть доступ править httpd.conf, то для списка доменов удобнее rewritemap
RewriteMap доступен в контексте <VirtualHost>, а не .htaccess
Если доступен mod_setenvif, то можно по условию ставить своё значение в переменную окружения, а в RewriteCond проверять её значение.
Если вдруг нет mod_setenvif, то можно и без него.
Поместить всё в одно правило.
Если апач 2.4
Сайт статический на html. многие внутренние ссылки имеют вид site.com/?p=715, но по факту, когда кликаешь на данную ссылку, сайт отдает 404 ответ. Но в данной папке есть файл index.html (полный путь будет site.com/?p=715/index.html)
Переписывать весь код добавляя к каждой ссылке "/index.html" не представляется возможным, так как на сайте более 4K страниц.
Т.е. в корне сайта есть папка с именем "p=715" и в ней есть index.html
Тогда подойдёт такое правило:
Если имя папки содержит знак вопроса "?p=715"
Смеха ради можно запихнуть в одно правило все три условия :)
Нужно в правильном порядке расставить location http://nginx.org/ru/docs/http/ngx_http_core_module.html#location
Правило для файлов из папки /admin/ поставить выше правила для остальных папок.
Или ставить нужное значения с помощью map http://nginx.org/ru/docs/http/ngx_http_map_module.html
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
.htaccess