Назад | Перейти на главную страницу

Папка перенаправления Apache на поддомен

У клиента была заявка на www.example.com/dir. Теперь они создали субдомен в dir.example.com. Поддомен ссылается на файлы, хранящиеся в www.example.com/dir. Теперь им хотелось бы, чтобы люди получали доступ www.example.com/dir быть перенаправленным на dir.example.com.

Полагаю, мне нужен .htaccess сидеть в www.example.com/dir и если к нему обращаются с www, перенаправить на поддомен, просто не уверен в синтаксисе.

Добавить .htaccess в каталог, принадлежащий www.example.com/dir:

RewriteEngine on
RewriteCond ${HTTP_HOST} ^www\.example\.com$
RewriteRule ^(.*) http://dir.example.com/$1 [R,L]

Первая строка позволяет mod_rewrite, вторая строка проверяет, что текущий запрос использует имя хоста www.example.com для доступа к ресурсу, а третья строка перенаправляет все такие запросы на желаемое целевое имя хоста.

А просто:

Redirect /dir http://dir.example.com

Попробуйте это правило в файле .htaccess в вашем / dir каталог:

RewriteCond %{HTTP_HOST} !=dir.example.com
RewriteRule .* http://dir.example.com/$0 [L,R=301]

Или это правило в корневом каталоге:

RewriteCond %{HTTP_HOST} !=dir.example.com
RewriteRule ^dir(/(.*))?$ http://dir.example.com/$2 [L,R=301]

Джоуэлл был почти у цели:

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

Вам нужна ведущая косая черта в RewriteRule или ничего не будет совпадать. В (/.*)?$ бит означает соответствие 0 или 1 фрагмента «косая черта», затем чего-либо в конце URI. (Это важно - без него мы бы также сопоставили www.example.com/dirsomethingelse).

  • www.example.com/dir -> dir.example.com
  • www.example.com/dir/ -> dir.example.com/
  • www.example.com/dir/blah.html -> dir.example.com/blah.html

Это должно работать:

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