.htaccess переписать субдомен в каталог

Можно ли использовать .htaccess для перезаписи поддомена в каталог?

Пример:

показывает содержимое

Ответ 1

Попробуйте добавить это в свой файл .htaccess:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^sub.domain.com
RewriteRule ^(.*)$ /subdomains/sub/$1 [L,NC,QSA]

Для более общего правила (которое работает с любым поддоменом, а не только с sub), замените две последние строки следующим:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com
RewriteRule ^(.*)$ subdomains/%1/$1 [L,NC,QSA]

Ответ 2

Я не эксперт по mod_rewrite, я часто с этим борюсь, но я делал это на одном из своих сайтов, для этого могут потребоваться другие флаги и т.д. в зависимости от ваших обстоятельств. Я использую это:

RewriteEngine on

RewriteCond %{HTTP_HOST} ^subdomain\.example\.com$
RewriteCond %{REQUEST_URI} !^/subdomains/subdomain
RewriteRule ^(.*)$ /subdomains/subdomain/$1 [L] 

Любые другие правила перезаписи для остальной части сайта должны действовать впоследствии, чтобы они не мешали перезаписи вашего субдомена.

Ответ 3

В htaccess вы можете использовать следующее правило для перезаписи субдомена в подпапку:

RewriteEngine On

 #If the host is "sub.domain.com"
 RewriteCond %{HTTP_HOST} ^sub.domain.com$ [NC]
 #Then rewrite any request to /folder
 RewriteRule ^((?!folder).*)$ /folder/$1 [NC,L]

Строка за строкой Объяснение:

  RewriteEngine on

В приведенной выше строке серверу предлагается включить механизм перезаписи URL-адресов.

  RewriteCond %{HTTP_HOST} ^sub.domain.com$ [NC]

Эта строка является условием для RewriteRule, где мы сопоставляем HTTP-узел с шаблоном регулярного выражения. Условие говорит, что если хост sub.domain.com, тогда выполните правило.

 RewriteRule ^((?!folder).*)$ /folder/$1 [NC,L]

Правило соответствует http://sub.domain.com/foo и внутренне перенаправляет его на http://sub.domain.com/folder/foo.

Замените sub.domain.com своим поддоменом и папкой с именем папки, в которую вы хотите указать ваш поддомен.

Ответ 4

У меня была та же проблема, и я нашел подробное объяснение в http://www.webmasterworld.com/apache/3163397.htm

Мое решение (содержимое субдоменов должно находиться в папке с именем sd_subdomain:

Options +FollowSymLinks -MultiViews

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} subdomain\.domain\.com
RewriteCond $1 !^sd_
RewriteRule (.*) /sd_subdomain/$1 [L]

Ответ 5

перенаправляет одну и ту же папку в поддомен: .httaccess

RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} ^([^\.]+)\.domain\.com$ [NC]
RewriteRule ^(.*)$ http://domain\.com/subdomains/%1

Ответ 6

Попробуйте помещать этот файл .htaccess в папку поддомена:

RewriteEngine On

RewriteRule ^(.*)?$ ./subdomains/sub/$1

Он перенаправляет на http://domain.com/subdomains/sub/, когда вы хотите, чтобы он показывал http://sub.domain.com/

Ответ 7

Переадресация каталога поддомена:

RewriteCond %{HTTP_HOST} ^([^.]+)\.(archive\.example\.com)$ [NC]
RewriteRule ^ http://%2/%1%{REQUEST_URI} [L,R=301]

Ответ 8

Для любого запроса поддомена используйте это:

RewriteEngine on 
RewriteCond %{HTTP_HOST} !^www\.band\.s\.co 
RewriteCond %{HTTP_HOST} ^(.*)\.band\.s\.co 
RewriteCond %{REQUEST_URI} !^/([a-zA-Z0-9-z\-]+) 
RewriteRule ^(.*)$ /%1/$1 [L] 

Просто создайте папку так же, как и имя поддомена. Папка должна существовать следующим образом: domain.com/sub для sub.domain.com.