2016-07-07 6 views
0

Apache設定ファイルに次のRewriteコードがありますが、Cookieの存在を認識することができません。私はここで答えの束を見てきましたが、実行中の問題を修正するものを見つけることができないようです。HTTP_COOKIE RewriteCond Failing

RewriteEngine on 
RewriteCond %{HTTP_COOKIE} ^returnvisitor$ [NC] 
RewriteRule .? - [S=3] 
RewriteRule /index.html /new_visitor.html 
RewriteRule .* - [CO=returnvisitor:yes:.127.0.0.1:1440:/:true:true] 
RewriteRule .? - [S=1] 
RewriteRule /index.html /returning_visitor.html 

アップデート1:

私は次のようにコードを修正し、いくつかの進歩を遂げたが、それが必要としてまだ機能していませんしました。

RewriteEngine on 
RewriteCond %{HTTP_COOKIE} returnvisitor=yes [NC] 
RewriteRule .? - [S=3] 
RewriteRule /index.html /new_visitor.html [R] 
RewriteRule .* - [CO=returnvisitor:yes:.127.0.0.1:1440:/:true:true] 
RewriteRule .? - [S=1] 
RewriteRule /index.html /returning_visitor.html [R,L] 

元のコードは、ホームページをリダイレクトします(つまりindex.htmlであるデフォルトページ)の2番目の要求にしかし、今私はリダイレクトがトリガーするためのURLでマニュアル要求index.htmlする必要がありますが、少なくともこの時点index.htmlreturning_visitor.htmlにリダイレクトされました。

私は訪問者がnew_visitor.htmlに送信され、その後の訪問がreturning_visitor.htmlにリダイレクトされ、初めてexample.com経由hompageにアクセスするときに発生するリダイレクトを必要としています。手を差し伸べてexample.com/index.htmlと入力してください。

+0

はあなたのクッキーであり、価値はありませんか?代わりに '^ returnvisitor ='を試してみてください。 –

+0

@MarcB私はRewriteRule。* - [CO = returnvisitor:yes:.127.0.0.1:1440:/:true:true]のコード行で初めてクッキーを作成しています。私は私のブラウザをチェックし、クッキーが正しく作成されている、それはちょうど 'RewriteCond'で検出されていません。私はその条件と '/^(.*;)を試しましたか?returnvisitor = yes(; *。)?$ /' – defaultNINJA

答えて

1

あなたは使用することができます。

RewriteEngine on 
#First visit 
# if the cookie is not set 
RewriteCond %{HTTP_COOKIE} !returnvisitor=yes$ [NC] 
# serve "/new_visitor.html" 
RewriteRule /index.html /new_visitor.html [R,L] 
#second visit 
#set the cookie "returnvisitor" on any uri 
RewriteRule .* - [CO=returnvisitor:yes:.127.0.0.1:1440:/:true:true] 
#check to see that the cookie is set 
RewriteCond %{HTTP_COOKIE} returnvisitor=yes$ [NC]  
#if so, redirect the index.html to "/returning_visitor.html" 
RewriteRule /index.html /returning_visitor.html [R,L] 

は、私はそれがあなたのために働く方法を知ってみましょう。