2013-07-11 107 views
1

我想使用我的.htaccess文件來添加「www」。到所有的URL,如果沒有它請求,但我的希望是,我可以做到這一點,而不必定義域,因爲我想在許多網站上使用此代碼,而無需編輯它。這可能嗎?URL規範化(.htaccess)

<IfModule mod_rewrite.c> 
    RewriteEngine On 

    RewriteBase/

    RewriteRule ^sitemap\.xml/?$ sitemap.php [L] 

    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 

    RewriteRule ^(.*)$ index.php?filename=$1 [L,QSA] 
</IfModule> 

回答

0

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^example\.com$ [NC] 
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301] 
+0

感謝您的回覆,但有沒有辦法做到這一點,而不必指定域名?我希望在很多網站上使用這些代碼,並希望這樣做,而不必編輯代碼,即使它只是我知道的一個小小的改變。 –

+0

這種方法的問題在於它需要模式匹配,這本身就很好,而且.htaccess主要是如何工作的。但是,如果你只是匹配一個通用的,那麼你怎麼做才能阻止某人輸入foo.com並獲得www.foo.com,還要輸入foo2.com,然後再吐出www.foo2.com。您需要對您想要添加www的域進行某種控制,以便更正此問題?如果你不指定它,你只是創建一個URL更改路由。 –

+0

如果您確實想使其具有通用性,請將條件更改爲常規擴展名以匹配您的域,例如[A-z0-9] {3,} \。{1} [Az] {3,4} –

0

對不起,我不能具體回答你的答案。我的建議是用你選擇的服務器端代碼來做到這一點。

在PHP中,你會做這樣的事情......

$host = !empty($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : $_SERVER['SERVER_NAME']; 
$url = explode(".", $host); 
if (count($url) == 2){ 
    //no subdomain found 
    redirect("www.".$host); 
} 

更新:這將有像example.co.uk域名的問題,不知道這是一個問題.... 。我試圖支持你的網站上的子域名(因此不僅僅是檢查www和追加)。

0

的HTML 5樣板使用此:

RewriteCond %{HTTPS} !=on 
RewriteCond %{HTTP_HOST} !^www\..+$ [NC] 
RewriteRule^http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

這將添加 「WWW」。即使已經有一個子域。