Переадресация .htaccess с поддоменов, не передавая часть поддоменов - PullRequest
1 голос
/ 02 июня 2010

У меня есть файл .htaccess, который перехватывает все субдомены (я использую запись DNS с подстановочными знаками) и перенаправляет их на страницу безопасного входа, но только если субдомен не www. Мой код для этого:

# Turn rewriting on
RewriteEngine On

# If no subdomain is supplied then add www by default
RewriteCond %{HTTP_HOST} ^mydomain\.com [NC]
RewriteRule ^(.*)$ http://www.mydomain.com/$1 [L,R=301]

# If the subdomain isn't www then redirect to the login page
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://secure.mydomain.com/a/%1 [R=301,L]

Это работает частично. Поймать www и вставить, если его там нет, это нормально, но то, что он не делает, это если я наберу:

http://sample.mydomain.com

Я хочу:

https://secure.mydomain.com/a/sample

но бит субдомена не добавляется до конца. Я думал, что бит% 1 сделает это, но, похоже, он не работает.

Кроме того, как вторая мысль, как я могу поймать:

https://secure.mydomain.com

где после .com ничего нет и перенаправить обратно на:

http://www.mydomain.com

У кого-нибудь есть мысли?

1 Ответ

1 голос
/ 02 июня 2010

Сделайте что-нибудь подобное:

# If the subdomain isn't www then redirect to the login page
RewriteCond "%{HTTP_HOST}" !^www.* [NC]
RewriteCond "%{HTTP_HOST}" ^([^\.]+).*$
RewriteRule ^(.*)$ https://secure.mydomain.com/a/%1 [R=301,L]

В общем случае вы должны перехватить часть субдомена и сделать ссылку на нее. Поэтому я добавил второй RewriteCond, который делает именно это. Обратные ссылки в RewriteConds доступны с помощью шаблонов «% n» в RewriteRules.

...