2012-05-11 5 views
0

に静的なサブドメインをリダイレクト:htaccessファイルは、私はイメージのため、いくつかの静的なサブドメインを作成したドメイン

www.static1.domain.com 
www.static2.domain.com 

は今、私は避けるために、www.domain.comに静的なドメインからの画像でないファイルをリダイレクトします重複コンテンツ。私は(存在しないファイルは静かにindex.phpにリダイレクトされます)私のhtaccessファイルにこれらのルールを持っている:

#Redirect static to main 
RewriteCond %{HTTP_HOST} static([0-9]+)\. 
RewriteCond %{REQUEST_FILENAME} -f 
RewriteCond %{REQUEST_FILENAME} !\.(js|css|png|jpg|jpeg|gif)$ [NC] 
RewriteRule (.*) http://www.domain.com%{REQUEST_URI} [R=301,L] 

#Redirect non exisitng files to index.php (silent) 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 

リダイレクトが正常に動作します。しかし、存在しない画像を入力するとhttp://www.static1.domain.com/test.gif、私はhttp://www.domain.com/index.phpにリダイレクトされています。

test.gifのリダイレクトは、インデックスphpにサイレントリダイレクトする必要があります ...私は間違っていますか?

ヒントありがとうございます。

+0

httpd.condまたは.htaccessのどこかに404ハンドラがありますか?上記のリクエストを送信する際に、一致するaccess.logとerror.logを投稿することをお勧めします。 – anubhava

答えて

0

は、このようにそれをやりました。 http://www.static1.domain.com/test.gifが見つからない場合、デフォルトサーバー404 Pageをスローします。最高ではないが、うまくいく。

RewriteCond %{HTTP_HOST} !static([0-9]+)\. 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 

RewriteCond %{HTTP_HOST} static([0-9]+)\. 
RewriteCond %{REQUEST_FILENAME} !\.(js|css|png|jpg|jpeg|gif)$ [NC] 
RewriteRule (.*) http://www.domain.com%{REQUEST_URI} [R=301,L] 
0

正しく理解しているかわかりません。あなたに静かにリダイレクトすると、 "index.php"がURLバーにあってはいけない、または "test.gif"というURLバーがまだ読み込まれているが、ページがindex.phpを表示するはずであることを意味するのでしょうか?

+0

第2の1つ:バーはtest.gifを読むが、index.phpをレンダリングする – Ilyssis

+0

変更 RewriteRule。 /index.php [L] 〜 RewriteRule^/index.php [L] これはうまくいくかもしれませんが、私はリダイレクトをいくつか持っていて、好きなように動作します。 – Rawkode

+0

違いはありません。サイレントリダイレクトは正常に動作しますが、静的からメインへのリダイレクトとの組み合わせでは機能しません。 – Ilyssis

0

RewriteCond行を複数追加することはできません。最後のものだけがRewriteRuleに適用されます。

ので、この行は何の影響もありません:

RewriteCond %{REQUEST_FILENAME} -f 

と非既存のイメージもリダイレクトされている理由ですが。およそ

方法:

#Redirect non exisitng files to index.php (silent) 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule . /index.php [L] 

#Redirect static to main 
RewriteCond %{REQUEST_FILENAME} !\.(js|css|png|jpg|jpeg|gif)$ [NC] 
RewriteRule (.*) http://www.domain.com%{REQUEST_URI} [R=301,L] 
+0

これは無限ループにつながるようです。 – Ilyssis

+0

次に、RewriteCond%{HTTP_HOST}静的([0-9] +)\を再追加してください。ライン。 – JochenJung

関連する問題