RewriteRule ^search/?$ list.php [nc,qsa]
RewriteRule ^search/([^/]+)(?:/?([^/]*)/?([^/]*)/?)? /list.php?category_slug=$1&oblast_slug=$2®ion_slug=$3 [L,QSA]# https://city.site.com/search/
RewriteCond %{HTTP_HOST} ^(?>www\.|)([\w-]+)\.site\.com$ [NC]
RewriteRule ^search/?$ list.php?crt_city=%1 [L,QSA]
RewriteRule ^search/([^/]+)(?:/?([^/]*)/?([^/]*)/?)? /list.php?category_slug=$1&oblast_slug=$2®ion_slug=$3 [L,QSA] RewriteRule ^search/?$ list.php [nc,qsa]
# https://city.site.com/search/
RewriteCond %{HTTP_HOST} ^(?>www\.|)([\w-]+)\.site\.com$ [NC]
RewriteRule ^search/$ list.php?crt_city=%1 [L,QSA]^search/$ уже никогда не сможет совпасть. var_dump($_SERVER['QUERY_STRING']); в файле list.php чтобы понять что же на самом деле получает скрипт.[L,QSA] это внутреннее перенаправление которое никак не меняет адресную строку в браузере. чтобы название субдомена, образно msk.site.com, подставлялся в параметр crt_city, чтобы в реальности получилось msk.site.com/search/?crt_city=msk, как это можно поправить?
list.php?crt_city=%1 тут в переменную %1 попадает msk. url2/url3/?code=XXX&state=YYYсоответствие переменной регулярному выражению с учётом регистра символов — “~” и без него — “~*”. В регулярных выражениях можно использовать выделения, которые затем доступны в виде переменных $1..$9.
RewriteCond %{HTTP_USER_AGENT} ^Mozilla/5\.0\ \(compatible;\ Googlebot/2\.[01];\ \+http://www\.google\.com/bot\.html\)$
RewriteCond %{REMOTE_ADDR} ^66\.249\.(6[4-9]|7[0-9]|8[0-46-9]|9[0-5])\. [OR]
RewriteCond %{REMOTE_ADDR} ^216\.239\.(3[2-9]|[45][0-9]|6[0-3])\.0
RewriteRule ^ - [S=1]
RewriteCond %{HTTP_USER_AGENT} Googlebot [NC]
RewriteRule ^ - [F]
RewriteCond %{HTTP_USER_AGENT} Googlebot [NC]
RewriteCond %{REMOTE_ADDR} !^66\.249\.(6[4-9]|7[0-9]|8[0-46-9]|9[0-5])\.
RewriteCond %{REMOTE_ADDR} !^216\.239\.(3[2-9]|[45][0-9]|6[0-3])\.0
RewriteRule ^ - [F]RewriteCond TestString CondPattern [flags]\, то Apache неверно раделит строку и вместо [flags] будет мусор.Safari/537\.36 \(compatible пробел без \.'...' или "...".Просто удалите эту строчку и все
RewriteRule ^ - [S=1]RewriteRule ^ - [F] оно блокирует всё что не попало в первое.RewriteCond %{REMOTE_ADDR} ^66\.249\., но оставить RewriteCond %{REMOTE_ADDR} ^216\.239\., то блокировать подсеть 66.249 продолжит. https://api.domain.com/api/v1<VirtualHost *:443> и ServerName api.domain.comRewriteEngine On
RewriteRule ^/$ https://admin.domain.com/ [R=301,L] # Перенаправление с /blog/article.html на /blog/article RewriteCond %{THE_REQUEST} \s/blog/article\.html [NC] RewriteRule ^ /blog/article [R=301,L] # Перенаправление с /blog/article на /blog/article.html (для внутренней обработки) RewriteRule ^blog/article$ /blog/article.html [L]
RewriteCond %{THE_REQUEST} \s/(blog/[^?.]+)\.html
RewriteRule ^ https://site.ru/%1 [R=301,L]
RewriteRule ^blog/[^.]+$ $0.html [L]
Так что тут без дополнительных видимых параметров реализовать можно только на стороне PHP.
Переделывать на единую точку входа.
PHP скрипт сам разбирает и проверяет $_SERVER['HTTP_HOST'], $_SERVER['REQUEST_URI'].
Потом открывает пользователя, либо город.