2011-01-31 16 views
1

Apacheと.htaccessファイルを使用してリダイレクトを設定しています。 301ドメインにあるすべてのドメインをサブドメインにリダイレクトする方法はありますかドメインインデックスの場合はを除いてですか?.htaccessリダイレクト

のでhttp://sub.domain.com/*

http://domain.com/*をリダイレクトしかし、それはあるhttp://domain.com/を残しますか?

誰かが助けることができる場合は、事前におかげで!

答えて

1

シングル書き換えルール:

# Rewrite if on main domain AND NOT requesting index 
RewriteCond %{HTTP_HOST} ^domain[.]com$ [NC] 
RewriteCond %{REQUEST_URI} !^(/(index[.](html|php))?)?$ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ http://sub.%1$1 [R=301,QSA,L] 
+0

それが最も簡潔な方法で仕事をする必要があるようにこれが見えます - 私は新しいdomain.comページが構築されれば、テスト、あなたが知っているだろう。ありがとう! – mrappleton

+0

私は最終的にこれを必要とすることに慣れて、それをテストしました。それは私が必要なものに近いと思われるが、それはまた、メイン(リダイレクトされていない)ページのCSSとJavaScriptの要求を書き換えている。 * .cssと* .jsをリダイレクトから除外する方法はありますか? – mrappleton

+0

@mrappleton - 上記の書き換えにいくつかの条件を追加しました。ファイルが存在する場合は書き換えません。 – HorusKol

0
# Check for non-empty request URI 
RewriteCond %{REQUEST_URI} (.+) 
RewriteRule .* http://sub.domain.com%1 [L,R=301] 
0

メインドメインでデフォルトのhtmlまたはphpを許可したいと思うかもしれません。その場合、次のルールのペアが機能するはずです。テストして確認します。

# Skip the rewrite for the root of domain.com 
RewriteCond %{HTTP_HOST} ^domain[.]com$ [NC] 
RewriteCond %{REQUEST_URI} ^(/(index[.](html|php))?)?$ 
RewriteRule ^(.*)$ - [L] 

# Rewrite everything else 
RewriteCond %{HTTP_HOST} ^(domain[.]com)$ [NC] 
RewriteRule ^(.*)$ http://sub.%1$1 [R=301,QSA,L]