Можно ли использовать .htaccess для перезаписи поддомена в каталог?
Пример:
показывает содержимое
Можно ли использовать .htaccess для перезаписи поддомена в каталог?
Пример:
показывает содержимое
Попробуйте добавить это в свой файл .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]
Я не эксперт по mod_rewrite, я часто с этим борюсь, но я делал это на одном из своих сайтов, для этого могут потребоваться другие флаги и т.д. в зависимости от ваших обстоятельств. Я использую это:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^subdomain\.example\.com$
RewriteCond %{REQUEST_URI} !^/subdomains/subdomain
RewriteRule ^(.*)$ /subdomains/subdomain/$1 [L]
Любые другие правила перезаписи для остальной части сайта должны действовать впоследствии, чтобы они не мешали перезаписи вашего субдомена.
В 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 своим поддоменом и папкой с именем папки, в которую вы хотите указать ваш поддомен.
У меня была та же проблема, и я нашел подробное объяснение в 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]
перенаправляет одну и ту же папку в поддомен: .httaccess
RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} ^([^\.]+)\.domain\.com$ [NC]
RewriteRule ^(.*)$ http://domain\.com/subdomains/%1
Попробуйте помещать этот файл .htaccess в папку поддомена:
RewriteEngine On
RewriteRule ^(.*)?$ ./subdomains/sub/$1
Он перенаправляет на http://domain.com/subdomains/sub/, когда вы хотите, чтобы он показывал http://sub.domain.com/
Переадресация каталога поддомена:
RewriteCond %{HTTP_HOST} ^([^.]+)\.(archive\.example\.com)$ [NC]
RewriteRule ^ http://%2/%1%{REQUEST_URI} [L,R=301]
Для любого запроса поддомена используйте это:
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.