RewriteCond %{THE_REQUEST} " /show_news\.php\?who=\d+" RewriteRule ^ https://tot.site/en/show_news.php [R=301,L]
Или
RewriteCond %{QUERY_STRING} (?:^|&)who=\d+(?:$|&) RewriteRule ^show_news\.php$ https://tot.site/en/show_news.php [R=301,L]
Или использовать $request_uri там первоначальный запрос целиком с аргументами.
if ($request_uri ~ "/index.php\?.*topx-id=(\d+)") { return 301 /templates/firm/diplom/default?topx-id=$1;}
domain.ru/path?query
rewrite как и location работает только с /path.
Переменные $1..$9 будут перезаписаны ещё на этапе проверки шаблона rewrite ^/index\.php$
и пропадёт всё что ранее было сохранено с помощью if ($args ~* "topx-id=(\d+)") {
Нужно именованное выделение в регулярном выражении (?<name>pattern)
Ну и если нужно перенаправление с кодом 301, то добавить флаг permanent.
Если в строке замены указаны новые аргументы запроса, то предыдущие аргументы запроса добавляются после них.
Если такое поведение нежелательно, можно отказаться от этого добавления, указав в конце строки замены знак вопроса.
if ($args ~* "topx-id=(?<topx_id>\d+)") { rewrite ^/index\.php$ /templates/firm/diplom/default?topx-id=$topx_id? permanent;}
Как на самом деле работает mod_rewrite.
Строка с которой работает RewriteRule содержит только index.php, а do=addnews&id=238 попадает в %{QUERY_STRING}.
# /index.php?do=addnews&id=238 -> /index.php?tpl=obyavleniya&do=addnews&id=238RewriteCond %{QUERY_STRING} ^do=addnews&id=\d+$RewriteRule ^index\.php$ /index.php?tpl=obyavleniya [R=301,L,QSA]# /index.php?do=addnews&id=238 -> /index.php?do=addnews&tpl=obyavleniya&id=238RewriteCond %{QUERY_STRING} ^(do=addnews)&(id=\d+)$RewriteRule ^index\.php$ /index.php?%1&tpl=obyavleniya&%2 [R=301,L]
$text = preg_replace_callback( '/<a\s+href="\K[^"]+/i', function ($m) { return str_replace(['(', ')'], ['1', '2'], $m[0]); }, $text);
Если www.site1.ru -> www.site2.ru
RewriteEngine On RewriteCond %{HTTP_HOST} ^(|.+\.)site1\.ru [NC] RewriteRule ^(.*)$ http://%1site2.ru/$1 [L,R=301]
Если www.site1.ru -> site2.ru
RewriteEngine On RewriteCond %{HTTP_HOST} ^www\.site1\.ru [NC] RewriteRule ^(.*)$ http://site2.ru/$1 [L,R=301] RewriteCond %{HTTP_HOST} ^(|.+\.)site1\.ru [NC] RewriteRule ^(.*)$ http://%1site2.ru/$1 [L,R=301]
<div\s+id="comments".+?</div>\s+</div>
Если анкоров произвольное количество. Проверялось на Notepad++ 7.9.3
(?-s)(.*?>)\(?(.*?)\||\)</a>\R?
$1$2</a>\n$1