2011-10-19 95 views
1

我想設置域名,象下面這樣:的.htaccess根域需要www和子域不需要WWW

example.com - > www.example.com

example.com/page - > WWW。 example.com/page

www.example.com - >不重定向

www.example.com/page - >不重定向


subdomain.example.com - >不重定向

subdomain.example.com/page - >不重定向

www.subdomain.example.com - > subdomain.example.com

www.subdomain.example.com/page - > subdomain.example.com/page


http和https也應該工作。

我得到的代碼.htaccess to require WWW for domain, but allow subdomain if existing with no hard coding

RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$ 
RewriteCond %{HTTPS}s ^on(s)| 
RewriteRule^http%1://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

它可以很好地工作,而是除了下面:

www.subdomain.example.com - > www.subdomain.example.com

www.subdomain.example.com/page - > www.subdomain.example.com/page

子域應該不是有'www。'前綴,但它仍然與'www。'。字首。

感謝教程。

回答

1

添加此規則後,你有

RewriteCond %{HTTPS} ^on$ 
RewriteCond %{HTTP_HOST} ^www\.([^.]+\.[^.]+\.[^.]+)$ 
RewriteRule^https://%1%{REQUEST_URI} [L] 

RewriteCond %{HTTPS} !^on$ 
RewriteCond %{HTTP_HOST} ^www\.([^.]+\.[^.]+\.[^.]+)$ 
RewriteRule^http://%1%{REQUEST_URI} [L] 

我沒有測試出來,但我敢肯定,我的理論的就可以了固體。至少假設您的示例中的HTTPS部分工作。

+0

現在我將此代碼粘貼在我的.htaccess文件: '的RewriteCond%{HTTP_HOST}^[^] + \。[^] + $'' %的RewriteCond {HTTPS}Š^(S)上|' 'RewriteRule^http%1://www.% {HTTP_HOST}%{REQUEST_URI} [L,R = 301]' 'RewriteCond%{HTTP_HOST}^www \。([^。] + \。 [^。] + \。[^。] +)$' 'RewriteCond%{HTTPS} s^on(s)|' 'RewriteRule^http%2://%1%{REQUEST_URI} [L,R = 301]' **對於子域部分仍然沒有問題:** www.subdomain.domain.com - > subdomain.domain.com(done), ** www.subdomain.domain.com /頁面 - >頁面/(問題)** –

+0

更改了我的答案。由於我錯過了htaccess文檔中的某些內容,因此需要兩條重寫規則。 –

+0

非常感謝這是解決我的問題,再次感謝。 –

相關問題