Перенаправление подкаталога на поддомен с помощью htaccess

Я относительно новичок в использовании .htaccess и никогда не занимался кодированием, кроме того, что читал в Интернете. Я использую Bluehost и хочу перенаправить подкаталог моего блога на поддомен. Пример: я хочу перенаправить www.example.com/blog на blog.example.com.

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


person user1670009    schedule 13.09.2012    source источник
comment
Вы добавляете www в начало адреса своего блога? Значит, он превращается в http://www.blog.example.com/?   -  person Jon Lin    schedule 14.09.2012
comment
Нет, он добавляет только www. когда адрес начинается с example.com   -  person user1670009    schedule 22.09.2012


Ответы (5)


Многие веб-хостинги сегодня предоставляют простую реализацию для создания поддоменов в своих панелях администрирования. Вам просто нужно перейти туда, выбрать имя поддомена, а затем указать его на каталог в вашем дереве.

Если вы не можете, то это будет немного сложнее (вам нужно будет преобразовать этот поддомен в IP-адрес вашего сервера, настроить некоторые виртуальные хосты ... и т. д.), и у вас может не хватить прав для этого (если вы не на выделенном сервере).

Изменить 2

Чтобы перенаправить запросы с www.example.com/blog на blog.example.com, попробуйте следующее:

RewriteEngine on

RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$
RewriteRule ^blog/(.*)$ http://blog.example.com/$1 [L,QSA,R=301]

RewriteCond %{HTTP_HOST} ^blog\.example\.com$
RewriteCond %{REQUEST_URI} !^blog/
RewriteRule ^(.*)$ /blog/$1 [L,QSA]
person Oussama Jilal    schedule 14.09.2012
comment
Я уже создал/настроил поддомен, и он правильно работает на blog.example.com. Я просто хочу знать, как перенаправить www.example.com/blog, который в настоящее время просто показывает мою домашнюю страницу, на blog.example.com с помощью кода htaccess. - person user1670009; 22.09.2012
comment
Этот код находится в файле htacess моей домашней страницы (www.example.com) или в файле htaccess моей подпапки (www.example.com/blog)? Просто чтобы исключить лишние переменные, я удалил фрагмент кода, который автоматически добавляет www. на передней панели моего сайта и добавил код, который вы предложили выше, но это не сработало. www.example.com/blog просто ведет меня на мою домашнюю страницу, но URL-адрес не меняется на URL-адрес домашней страницы — он остается www.example.com/blog. есть идеи? - person user1670009; 23.09.2012
comment
этот код находится на вашей домашней странице, а не в каталоге блога, и он не используется для перенаправления с www.example.com/blog на blog.example.com, он используется для перенаправления запросов с blog.example.com в каталог блога (см. отредактированный ответ) - person Oussama Jilal; 23.09.2012
comment
мне нужен код, который перенаправляет www.example.com/blog на blog.example.com. это то, что делает код выше? - person user1670009; 25.09.2012

Я хотел добавить свои два цента,

1) чтобы ответить на вопрос выше, это переписывание должно исправить это:

RewriteEngine on
RewriteCond %{REQUEST_URI} !\.
RewriteRule ^/blog$ http://blog.example.com [R=302,L]

2) но, думаю само по себе этого мало, нужно еще и DNS поменять, чтобы blog.example.com указывал на нужный сервер, а сделать это можно по cname похожему на этот:

blog.example.com  CNAME example.com TTL 1080

(не совсем так, как это будет выглядеть, но используйте свой веб-интерфейс DNS, чтобы настроить это).

person Sverre    schedule 19.08.2014
comment
Зачем вам использовать 302? - person John R Perry; 17.09.2015
comment
Угадайте, только если временно, 301 наверное лучше - person Sverre; 18.09.2015

Вы пробовали этот?

RewriteEngine on
RewriteBase /
RewriteRule ^/blog/(.*)$ http://blog.subdomain.com/$1 [R=301,L]
person alesub    schedule 21.11.2013

RewriteCond %{HTTP_HOST} ^check.domain.info$

RewriteCond %{REQUEST_URI} !^/проверить/

Правило перезаписи (.*) /check/$1

person Ravi Chauhan    schedule 24.03.2014

Чтобы перенаправить поддомен1, поддомен2 и каталог3 в каталог с HTTPS://, я использую следующий код:

RewriteEngine on

RewriteCond %{HTTP_HOST} ^subdomain1.example.com [OR]
RewriteCond %{HTTP_HOST} ^subdomain2.example.com [OR]
RewriteCond %{HTTP_HOST} ^example\.com/subdomain3 [NC]
RewriteRule ^(.*)$ https://example.com/subdirectory/$1 [R=301,L]
person namjoo.org    schedule 14.11.2020