Можно ли использовать .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]
http://test.domain.com/subdomains/test/
, когда я хочу только показать,http://test.domain.com/
test.domain.com/subdomains/test
- может, здесь что-то еще происходит. Вы можете добавить RewriteBase /
сразу после этого RewriteEngine on
? Кроме того, если вы хотите, чтобы он отображался, test.domain.com
вам придется использовать mod_proxy и [P]
флаг.
Я не эксперт по mod_rewrite, я часто борюсь с этим, но я сделал это на одном из своих сайтов, в зависимости от ваших обстоятельств могут потребоваться другие флаги и т.д. Я использую это:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^subdomain\.example\.com$
RewriteCond %{REQUEST_URI} !^/subdomains/subdomain
RewriteRule ^(.*)$ /subdomains/subdomain/$1 [L]
Любые другие правила перезаписи для остальной части сайта должны быть применены позже, чтобы они не мешали перезаписи вашего поддомена.
.htaccess
заходит на эту страницу (например, я), помимо создания фактического .htaccess
файла, чтобы он вступил в силу, вам необходимо установить AllowOverride
в своих VirtualHost
настройках ( stackoverflow.com/a/22819550/1657502 ) , включите rewrite
модуль Apache, а затем перезапустите Apache ( stackoverflow.com/a/5758551/1657502 )
www.
префикс, вероятно, лучше всего поддерживается с помощью перенаправления, чем перезаписи.
Вы можете использовать следующее правило в .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]
Это перенаправляет в ту же папку на поддомен:
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]
Просто сделайте какую-нибудь папку такой же, как и нужное вам субдомен. Папка должна быть EXIST как это: domain.com/sub для sub.domain.com .
http://test.domain.com
, URL-адрес перенаправит меня наhttp://test.domain.com/subdomains/test/
. Можно ли без показа/subdomains/test/
в конце?