2016-05-05 28 views
1

私はApacheのmod_rewriteモジュールを使用しています。正規表現RewriteCondの中にRewriteRuleでキャプチャされたグループを参照する方法はありますか?例えばrewritecond regexのrewriterule参照グループを参照していますか?

RewriteCond %{REQUEST_URI} ^(.*(?=/#How can I 'paste' $1 = RewriteRule's (.*) group here?#$)) 
RewriteRule ^(.*)$ - [E=BASE_PATH:%1] 

私はmysite.domain/subdir/my/site/dirを要求した場合ここで私は、例えば、リクエストURIのベースパスにマッチします、と.htaccessが、その後subdir/内にある:

1) RewriteRule ^(.*)$ ----> ^(my/site/dir)$ -----> $1 = my/site/dir 
2) RewriteCond /subdir/my/site/dir ^(.*(?=/#I need to 'paste' the $1 RewriteRule's matched group here#$)) 

どのようにすることができます私は私のRewriteCond正規表現が '動的に'生成されるようにします:

^(。*(?=/私/サイト/ DIR $))

私/サイト/ DIRはするRewriteRuleの$ 1基はにマッチしたものである場合は?

+0

[OK]をクリックしてあなたはそれがうまくいくと思う方法を説明しようとしているので、説明は混乱しています。あなたが達成しようとしていることだけを説明できますか? –

+0

さて、私はより簡潔で明確にしようとします。 RewriteRuleがマッチすると、捕捉されたグループは$ 1に格納され、 'RewriteCond'パターン文字列では' $ 1'として利用可能です。したがって、 '$ 1 - %{REQUEST_URI}([^ - ] *) - (。*?)\ 1 $'の場合、 '$ 1 - %{REQUEST_URI}'は 'my/site/dir-/subdir/my/site/dir-/subdir/my/site/dir'と入力します。私は同じことをする必要がありますが、一致する文字列ではなく、 'RewriteCond'の正規表現内で展開します。 – tonix

答えて

1

ない私はあなたの質問を理解するが、ここではdyanmically

RewriteEngine on 

RewriteCond $1-%{REQUEST_URI} ([^-]*)-(.*?)\1$ 
RewriteRule ^(.*)$ - [E=BASE:%2] 

あなたでRewriteBaseパスは、現在のenv%{ENV:BASE}での使用のために利用可能であるでRewriteBaseを取得する方法であることを確認

+0

'([^ - ] *) - (。*?)\ 1 $'内で 'RewriteCond $ 1 - %{REQUEST_URI}'の '$ 1 'を使用して、マッチを行う前にコンテンツを展開することはできますか? – tonix

+0

いいえ、条件パターンでは許可されていませんが、書き換え条件の最初の取得グルー​​プには** \ 1 **を使用できます。 – starkeen

+1

おかげさまで、それは私が理解しようとしていたものでした。 – tonix

関連する問題