2010-06-02 34 views
1

我有捕捉所有子域名(我使用通配符DNS記錄),並將其重定向到一個安全的登錄頁,但前提是子域名是不是WWW .htaccess文件。我的代碼是:的.htaccess從子域名重定向不及格的子域部分

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

這是部分工作。萬維網的捕捉和插入,如果它不存在是好的,但它不是做的是,如果我輸入:

http://sample.mydomain.com 

我想:

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

但子域位不會被追加到最後。我認爲%1位會做到這一點,但似乎沒有工作。

此外,作爲第二個想法,我怎麼能趕上:

https://secure.mydomain.com 

這裏沒有什麼是後.com和重定向回:

http://www.mydomain.com 

任何人有什麼想法?

回答

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來做到這一點。在RewriteRules中使用'%n'模式訪問RewriteConds中的反向引用。

+0

最高職位。我知道我一定錯過了一些簡單的事情。 – 2010-06-02 12:47:41