2012-03-30 7 views
3

同じコードで複数のドメインを実行しており、それぞれのフォルダに画像を保存したいとします。ここに私たちがやっていることがあります。ユーザーがわからないhtaccessリダイレクト

/images/www.domain1.com/logo.jpg /images/www.domain2.com/logo.jpgは

今、私が知っているしたいのは、私たちが書き換えhtaccessファイルで、この可能ですユーザーが何も疑わないURLこれは

<img src="/images/logo.jpg" /> 

は内部でのhtaccess

RewriteRule ^images/(.*)$ /images/{HTTP_HOST}/$1 [L,R=301] 

経由になる必要がありますが、私の質問は、私はIMGの効果を達成することができます上記のリダイレクトが継続的に

  • をループし、

    1. であることを私が望むものですユーザーまたは管理者が何かを疑うことなく

    敬具、

    Khuram

  • 答えて

    1

    あなたは間違いなくRフラグを使用しないでください。しかし、Rフラグがなくても、RewriteRuleは無限にループし、最終的にはinternal server errorになります。 RewriteRuleルールが正常に適用されると、200に設定されている{ENV:REDIRECT_STATUS}と呼ばれる特別な内部変数を使用している

    RewriteCond %{ENV:REDIRECT_STATUS} !200 
    RewriteRule ^images/(.*)$ images/%{HTTP_HOST}/$1 [L,NC] 
    

    :このような使用のRewriteRule。

    +0

    非常にうまくいった。これは完全に機能します。私に新しいトリックを教えてくれてありがとう。 – Khuram

    +1

    大歓迎です。私はあなたのためにうまくいってうれしいです。 – anubhava

    6

    は単に書き換えではなく、リダイレクトを行うにR=301削除:それは継続的にループしています理由は、301リダイレクトが新しいを引き起こすことがある

    RewriteRule ^images/(.*)$ /images/{HTTP_HOST}/$1 [L] 
    

    をURL images/www.domain1.com/logo.jpgのために作成される要求。そのURLはあなたの^images/(.*)$ルールにも一致しているため、無限に再度リダイレクトされます。

    本当に301リダイレクトをしたいのであれば(そうしないと思いますが、そうした場合は)、ドメインが既に含まれている場合、リダイレクトをスキップするためのいくつかの書き換え条件を追加して無限ループ問題を解決できます。ブラウザでURLを変更したくない場合は

    RewriteCond {REQUEST_URI} !^images/www.domain1.com/(.*)$ 
    RewriteCond {REQUEST_URI} !^images/www.domain2.com/(.*)$ 
    RewriteRule ^images/(.*)$ /images/{HTTP_HOST}/$1 [L,R=301] 
    
    +0

    こんにちはエリック、説明のおかげで、私は私が近くにいることを知っていたが、今私はこれらの各ステップをやっている理由を知っている。私は試して、これを終了としてマークします。 – Khuram

    +0

    こんにちは@エリックAnubhavaの答えは、以下のトリックでした。これは再びループする予定でした。再度、感謝します。 – Khuram

    関連する問題