Прозрачная перезапись / пропуск сквозного поддомена - PullRequest
0 голосов
/ 09 февраля 2011

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

Я написал следующие правила для моих поддоменов:

#remove www.
RewriteCond %{HTTP_HOST} ^www\.domain\.com$ [NC]
RewriteRule ^(.*)$ http://domain\.com/$1 [R=301,L]

#rewrite subdomains to /club/<clubname as defined by subdomain>/<whatever was here before>
RewriteCond %{HTTP_HOST} ^(.+)\.domain\.com$ [NC]
RewriteRule ^(.*)$ http://domain.com/club/%1/$0 [NC,L]

Это отчаянно близко к тому, что мне нужно, т. Е. Если я перейду к http://alpha.domain.com/some/string/here, URL будет переписан на http://domain.com/club/alpha/some/string/here

однако

Я бы хотел, чтобы URL-адрес в браузере по-прежнему выглядел как исходный URL

Большое спасибо заранее

РЕДАКТИРОВАТЬ : Я пытался просто добавить PT в окончательное правило, но это не работает, я получаю ошибку 400

EDIT2 : Для всех, кто заинтересовался, я оставил эту строку запроса и вместо этого использовал php для чтения текста в поддомене.

1 Ответ

1 голос
/ 10 февраля 2011

Если субдомен www.example.com использует тот же виртуальный хост, что и домен example.com , вы можете просто использовать внутреннюю перезапись, используя относительный путь:

RewriteCond %{HTTP_HOST} ^(.+)\.example\.com$ [NC]
RewriteCond $0 !^club/
RewriteRule ^(.*)$ club/%1/$0 [NC,L]

В противном случае вам понадобится прокси:

RewriteCond %{HTTP_HOST} ^(.+)\.example\.com$ [NC]
RewriteRule ^(.*)$ http://example.com/club/%1/$0 [NC,L,P]
...