2016-10-24 2 views
1

を変更、私はURLで別の変数に正規表現を依存する何か他のものに(追加)変数名を変更できるようにする必要があります。のmod_rewrite私はapacheのmod_rewriteをして少し問題を抱えています変数の内容

https://localhost:85/fight?shoes=baby.firstlove&type=textype&awesome=23481234 

これは私が "素晴らしい="が234 [8,7] 1234ならば、shoes = baby.firstloveがshoes = baby.firstlovefirsttryになるはずです、もし素晴らしいなら234 [1,2] 1234、then shoes = baby。 firstloveは、靴= baby.firstlovesecondtryになるはずです。

私の書き換えルールは次のようなものです(捕獲しようとしている23411234 =素晴らしいまたは23425678 =素晴らしい):

RewriteCond %{QUERY_STRING} shoes=(.+)\&awesome=(\b234(1|2)\d{4}\b) 
RewriteRule ^(.*)$ http://localhost:85/fight?shoes=baby.firstloveactual&subscriber=%2 [P] 

しかし、予想通り、彼らは「靴=」変数の内容を変更されていません。 URLは同じです:

http://localhost:85/fight?shoes=baby.firstlove&type=textype&awesome=23481234 

私は間違っていますか?

+0

* "シューズ="可変内容を期待通りに変更しない "* - 何が起こっていますか?投稿に関連する出力やエラーメッセージを含めてください([編集](http://stackoverflow.com/posts/40219803/edit)をクリックしてください)。 –

答えて

0
RewriteCond %{QUERY_STRING} shoes=(.*)\&awesome=(\b234(1|2)\d{4}\b) 

あなたの正規表現は、あなたの例のURLと一致していません:

https://localhost:85/fight?shoes=baby.firstlove&type=textype&awesome=23481234 

あなたの正規表現が1または2を期待して8を持っています。ただし、一連の文字のいずれかに一致する必要がある場合は、括弧で囲まれたグループではなく、文字クラス(たとえば、[12])を使用する必要があります。また、単語の境界線(つまり\b)で何をしようとしているのかよく分かりません。 Pフラグを使用する意思は何ですか?おそらくは外部からをリダイレクトする必要がありますか?

また、コードサンプルが問題のテキスト記述と一致していないようですか?

"素晴らしい=" 234 [8,7] 1234、靴= baby.firstlove靴なるべき= baby.firstlovefirsttry

は、 "1234" はリテラル文字列であると仮定すると(以下にしようとしますむしろ任意の 4桁)より:

RewriteCond %{QUERY_STRING} shoes=.+&awesome=(234[87]1234) 
RewriteRule ^/?fight http://localhost:85/fight?shoes=baby.firstloveactual&subscriber=%1 [R,L] 

あなたのリライトであなたの例のURLでhttpsが、httpを使用しましたか?

+0

元の投稿に申し訳ありません。今すぐクリーンアップ。 – Sina

+0

私は、そのような仕事の解決策を見つけたと思う: ' RewriteCond%{QUERY_STRING}靴=赤ちゃん\。(\ *)\&awesome =(\ b234(1 | 2)\ d {4} \ b) RewriteRule /fight?(.*)$ http:// localhost:85/fight?shoes = baby。最初の行動は&%2&awesome =%3 [P] ' この種の靴は、靴と素晴らしいものの間の変数を持つurlseを扱います: [link] http:// localhost:85/fight?shoes = baby .firstlove&type = textype&awesome = 23481234 それが日の光で生き残れるかどうかはわかります... 私はコメントにコードを入れる戦いを失ったと思います。 – Sina

+0

上記の(あなたの元の状態を含めて)すでに "靴"と "素晴らしい"の間に変数を持つURLを扱います、それは '' show =〜+&awesome'の '' +これはあまりにも多すぎるかもしれません - あなたの改訂された正規表現も同様ですが)。パターン '/ fight?(。*)$'には注意してください - '? 'は前の" t "をオプションにし、末尾の'(。*)$ 'は余計です。ああ、これらのルールはサーバーの設定で直接ですか?私は自分の答えを更新します(私はあなたが '.htaccess'を使っていると仮定しました)。 – MrWhite

関連する問題