0

mod_jk と mod_proxy の両方でこれを試しましたが、同じ結果が得られました。

この mod_rewrite ルールを使用するとうまくいきます:

RewriteRule ^/(.*)\-blah.html$ /blah/blah/blah?blah=l2vb&party_name=$1 [R,L]

これに関する問題は、見苦しい新しい URL/blah/blah/blah?blah=l2vb&party_nameがブラウザーのアドレス行に表示されることです。これは避けたかったことです。これを行う[R]フラグのようです。

次のルールは、醜い URL を非表示にし、新しいきれいな URL のみを表示します。

RewriteRule ^/(.*)\-blah.html$ /blah/blah/blah?blah=l2vb&party_name=$1 [P,L]

注意: ここでの唯一の違いは、. 間の最後のフラグ[]です。

問題は、ユーザーがショッピング カートに既に何かを入れている場合、空になることです。どういうわけか、彼らの接続セッション (またはそれが何であれ - ここでは私の深さからではなく!) が再初期化されるため、最初から始めているように見えます。

[PT,L]など、他のフラグの組み合わせをいくつか試し[R,PT]ましたが、これまでのところうまくいきませんでした。

4

1 に答える 1

0

フラグは302リダイレクトコードを意味し、[R]ブラウザのURLを明らかに変更します。

私はあなたがQSA旗を必要とすると思います:

RewriteRule ^/(.*)\-blah.html$ /blah/blah/blah?blah=l2vb&party_name=$1 [QSA,L]

QSAフラグは既存のクエリ文字列を保持します(より正確には、新しいURLに追加します)..クエリ文字列を操作すると失われます。セッションIDなどがクエリ文字列を介して渡される可能性があると思います。URLが書き換えられると失われるため、サーバーは新しいセッションを作成します。その場合は、上記で問題が解決するはずです。

Apacheドキュメント: http: //httpd.apache.org/docs/current/rewrite/flags.html#flag_qsa

于 2011-08-05T20:45:55.143 に答える