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]