2012-03-15 7 views
1

私はクッキーの値に応じて、IMGのパスを変更するために私htacceesでこれを使用しています:htaccessファイルが動作しない - クッキーの値を持つ更新画像パスを

<img src="http://www.some.com/images/VARIABLE/img/1.jpg" alt="" /> 

画像リンクがとても似ている

<IfModule mod_rewrite.c> 
    # check for client cookie 
    RewriteCond %{HTTP_COOKIE} (?:^|;\s*)client=([^;]*) 
    # check if an image was requested 
    RewriteCond %{REQUEST_FILENAME} \.(jpe?g|gif|bmp|png)$ 
    # exclude these folders 
    RewriteCond %{REQUEST_URI} !some/members/logos 

    # grab everything before the variable folder and everything afterwards 
    # replace this with first bracket/cookie_value/second bracket 
    RewriteRule (^.+)/VARIABLE/(.+)$ $1/%1/$2 [L] 
</IfModule> 

私はこれまでこれを作ってうれしいですが、問題は...うまくいきません。なぜか分からないのですか?誰か光を当てることはできますか?

ありがとうございます!

HALFWAY:
私はこれが動作するようになった:SET_VALUEで私の変数を置き換え

RewriteRule ^(.+)/VARIABLE/(.+)$ $1/SET_VALUE/$2 [L] 

を。ただし、条件を1つ追加すると、すべてが失敗し、画像が表示されなくなります。たとえば、これは私がSET_VALUEの代わりに入力したいクッキー値、与えるべきである:

RewriteCond %{HTTP_COOKIE} (?:^|;\s*)client=([^;]*) [NC] 
+0

Apacheを完全に制御できる場合は、デバッグモードを有効にする: 'RewriteLogLevel 9'(または最新バージョンの場合はhttp://httpd.apache.org/docs/current/mod/mod_rewrite.html#logging)をチェックしてログには詳細が表示されます(より詳細なデバッグレベルであれば詳細なログが表示されます)。 – LazyOne

+0

にアクセス権がありません:-(他に何が起きているのかについての情報はどこにありますか?私はちょうど推測しています - 今すぐ確認しています。 ... – frequent

+1

多分、あなたはローカルのApacheを使うことができますか?そうでなければ、サークル内で試してみてください。 bmp | png))$ 'RewriteRuleのパターンは2番目の条件を取り除きます。 'RewriteCond%{REQUEST_URI}!/ some/members/logos'もうまくいくはずです(ここに間違ったパスがない限り!!)。 – LazyOne

答えて

0

ソリューション:(後くらい@LazyOneからおせっかいと多くの助け!):

<IfModule mod_rewrite.c> 
    # exclude these folders 
    RewriteCond %{REQUEST_URI} !/some/members/logos 
    # check for client cookie   
    RewriteCond %{HTTP_COOKIE} client=([^;]*) [NC]  
    # replace variable with cookie value 
    RewriteRule ^(.+)/variabel/(.+\.(jpe?g|gif|bmp|png))$ $1/%1/$2 [L] 
</IfModule> 

解決するために永遠にかかったトリッキーな部分は、あなたのクッキーは、末尾を持っていることを確認することです半コロン...私はこのように私のクッキーを設定しました:

document.cookie = "client=value" 

これはうまくいきませんでした。これに変更する:

document.cookie = "client=value;" 

となっています。誰かのエールにとっても役立つかもしれません。

0

を私はこの問題は、あなたが/images/jpg/1.jpgまたは/images//1.jpgのようなパスを持つ羽目になるということであると仮定していますか?

あなたのクッキー値の逆参照として使用していますが、後方参照は「最後に一致したRewriteCond」を参照し、一致させたいものの後に他のもの(グループ化を含む)を持つ必要があります。クッキーを1つ前に移動してみてください。

さらに、そのクッキーには2つのグループがありますが、%1を使用しています。これは([^;]*)の代わりに(?:^|;\s*)を参照することになり、間違った結果になります。

これは問題ではない場合は、URLがどのように出力されているかを詳しく説明できますか?それは全く書き直されていないのですか、それとも間違って書き直されていますか?

+0

情報のためのThx。それは全く書かれていない。 – frequent

+0

変数の前後でグループ化すると(グループ化前)/ cookie /(グループ化後)元のURLパーツを返すことができると考えました – frequent

+0

全く書き換えられていない場合、別の問題があるはずです。私はそれを一目で見ることができないので、あなたが問題の原因となっているもの(またはルール自体)を見つけるまで、 'RewriteCond'を選択的に削除することを提案します。おそらく '%1'の代わりに文字列を一時的に使用して、まったく書き直すことができません。 – Rick

関連する問題