Как в htaсcess правильно сделать редирект 301 из папки на поддомен с помощью Rewrite?

Друзья, помогите сделать правильно редирект 301 с помощью Rewrite.
Ситуация следующая, на условном домене site.ru у регистратора прописаны A записи *.site.ru и www.site.ru и site.ru для IP ареса сервера, это для привязки домена и всех поддоменов, это для полной картины.

Поддомены создаются автоматически, через создания папок, в корне есть папка с именем subdomains, в ней создаются папки поддоменов, например там есть папка test, и если пройти по адресу test.site.ru то все порядок, поддомен работает из нужной папки. Но вот проблема, если пройти по URL site.ru/subdomains/test/ происходит редирект на основной домен site.ru, а нужно на поддомен, почему так происходит? Что не так в правилах htaсcess?

Вот мой htaсcess в корне который лежит сайта.
RewriteEngine On
RewriteCond %{THE_REQUEST} /subdomains/[^/]
RewriteRule ^subdomains/[^/]+/(.*) /$1 [R=permanent,L]
RewriteCond %{HTTP_HOST} ^(.+)\.site\.ru$ [NC]
RewriteCond %{HTTP_HOST} !^www\.site\.ru$ [NC]
RewriteCond %{REQUEST_URI} !^/subdomains
RewriteRule ^(.*) %{HTTP_HOST}$1
RewriteRule ^(www\.)?(.+)\.site\.ru(.*) /subdomains/$2%{REQUEST_URI} [L]

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 

php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on

AddDefaultCharset utf-8
AddCharset utf-8 *
<IfModule mod_charset.c>
CharsetSourceEnc utf-8
CharsetDefault utf-8
</IfModule>
  • Вопрос задан
  • 54 просмотра
Решения вопроса 1
@dodo512
RewriteCond %{THE_REQUEST} /subdomains/[^/]
RewriteRule ^subdomains/[^/]+/(.*) /$1 [R=permanent,L]
RewriteCond %{HTTP_HOST} ^(.+)\.site\.ru$ [NC]
RewriteCond %{HTTP_HOST} !^www\.site\.ru$ [NC]
RewriteCond %{REQUEST_URI} !^/subdomains
RewriteRule ^(.*) %{HTTP_HOST}$1
RewriteRule ^(www\.)?(.+)\.site\.ru(.*) /subdomains/$2%{REQUEST_URI} [L]


RewriteCond %{THE_REQUEST} /subdomains/
RewriteRule ^subdomains/([^/]+)/(.*) http://$1.site.ru/$2 [R=301,L]

RewriteCond %{HTTP_HOST} ^(?>www\.|)(.+)\.site\.ru$   [NC]
RewriteRule !^subdomains /subdomains/%1%{REQUEST_URI} [L]
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы