2014-02-14 47 views
1

所有子我想在我的網站上的所有domain.com重定向到www.domain.com非重定向的「www」,以「WWW」,並改寫除了WWW

是所有子域而不是www.domain.com,例如xyz.domain.com/abc重寫(不是重定向,因爲它仍然會在瀏覽器上顯示xyz.domain.com/abc)到www.domain.com/page.php?id=xyz & param = abc。

目前我有這樣的:

RewriteCond %{HTTP_HOST} !^www\.(.*)$ [NC] 
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301] 
RewriteCond %{HTTP_HOST} !^(www\.)?[^.]+\.domain\.com.*$ 
RewriteRule (.*) http://www.domain.com/hosted_form.php?id=$1 [L] 

它成功地重定向domain.com到www.domain.com,但沒有找到mno.domain.com/efg顯示服務器。

+0

是這些網站在同一臺服務器上?你有DNS記錄設置爲你嘗試使用的所有子域名嗎? –

回答

0

除了薩達姆阿布Ghaida解決方案,修復與非www網址你的問題,你必須要啓用通配符子域,以避免問題的任何子域「找不到服務器」。

如果您使用的是Apache,修改您的配置文件httpd.conf中包含通配符線如下:

NameVirtualHost ?.?.?.? 

<VirtualHost ?.?.?.?> 
    DocumentRoot /www/subdomain 
    ServerName www.domain.tld 
    ServerAlias *.domain.tld 
</VirtualHost> 
+0

我遵循您的評論並啓用了通配符子域名,但@Saddam解決方案將所有子域名重定向至www.domain.com;而我只希望將domain.com重定向到www.domain.com和其他子域名未重定向但重寫爲另一個URL。 –

+0

好的,第一步是通過子域到達站點。現在,你必須決定重定向目標基礎上所要求的子域名只是AAS如下:

 RewriteCond %{HTTP_HOST} ^sub.site.local$ [OR] RewriteCond %{HTTP_HOST} ^www.sub.site.local$ RewriteRule ^(.*)$ http:///$1 [L] 

+0

要明確: -RewriteCond%{HTTP_HOST}^$ sub.site.local [OR] -RewriteCond%{HTTP_HOST}^www.sub.site.local $ -RewriteRule ^(。*)$ http:// <目標網址>/$ 1 [L] –

1
RewriteCond %{HTTP_HOST} ^([a-z.]+)?domain.com$ [NC] 
RewriteCond %{HTTP_HOST} !^www. [NC] 
RewriteRule .? http://www.%domain.com%{REQUEST_URI} [R=301,L] 
+0

它成功地將非www重定向到www(必須刪除重寫小節中的第一個%),但是當我使用demo.domain.com時,未找到服務器。 –

+0

在你的例子中,你正在從子域重寫查詢字符串是不是。這就是你想要做的? –

+0

我想要1.如果沒有子域例如。它將重定向到www.domain.com;但是當有一個不是www的子域時,例如。 sub.domain.com/abc,它不會重定向,但會重寫爲domain.com/id=sub¶m=abc。 –