2009-03-10 9 views
0

[OK]を、検索マーケティングから来ている既存のリンクがあります。私はCold FusionからPHPに移行する過程にあります。More Mod_rewriteの問題

RewriteEngine on 
RewriteRule ^cat_ap~([^~]+)~(.*)\.htm$ /urban/cat_ap.php?$1=$2 [R] 

現在、私は、URLの構造を持っている:

http://www.test.com/urban/cat_ap.php?nid=5964 

に上記の書き換えルールの変更は、今私は、クエリ文字列から変数を取得することができるようにしたい

http://www.test.com/urban/cat_ap~nid~5964.htm 

ブラウザのURLを元のhttp://www.test.com/urban/cat_ap~nid~5964.htmに維持しますが、まだPHPページに移動しています。

http://www.test.com/urban/cat_ap~nid~5964.htmに行くと、実際にはhttp://www.test.com/urban/cat_ap.php?nid=5964になりますが、まだhttp://www.test.com/urban/cat_ap~nid~5964.htmと表示されます。

これを行う方法に関するアイデアはありますか?

おかげ

マイク

答えて

0

あなたは既にこの行にこれをやって(ただし、LにRフラグを変更)されています

RewriteRule ^/urban/cat_ap~([^~]+)~(.*).htm$ /urban/cat_ap.php?$1=$2 [L] 

URLユーザーヒットはまだのように表示されますサーバーが.phpとして処理する間、.htmバージョン

+0

Rフラグはユーザを新しいURLにリダイレクトします。元のRewriteRuleの$ 1は変数名の名前になりますが、改訂RewriteRuleはこれを値に設定します。Mikeはnid = 5964の例を指定します – alastairs

0

R flagは、明示的に外部リダイレクトを誘導します。ですので、Rフラグを削除してください。

0

希望の動作を実現するためにリバースプロキシを設定し、書き換えルールでPフラグを使用する必要があると思います。私はこの種の設定でサイトを使用していましたので、動作するとは言いますが、自分で設定したことはありません:-(

少なくともmod_proxy mod_rewrite cookbook page on the P flagには、RewriteRulesのプロキシに関する細かいディテールがあり、apache.orgのProxyPassReverseディレクティブのドキュメントにリンクしています。

関連する問題