.htaccess редирект с поддомена, не передавая часть поддомена

У меня есть файл .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

У кого какие мысли?


person Ira Rainey    schedule 02.06.2010    source источник


Ответы (1)


Сделайте что-нибудь вроде этого:

# 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.

person initall    schedule 02.06.2010
comment
Высшая должность. Я знал, что, должно быть, упустил что-то простое. - person Ira Rainey; 02.06.2010