2016-06-30 5 views
-1

htaccessファイルを作成する際に問題があります。私はこのようなURIを持っている:htaccessファイルの部分文字列を取得する

http://www.exemple.com/?fileName=fileName&otherString=otherString 

そして、私はこのようなコマンドを実行したいと思います:

<If "file('fileName') !~ /otherString/"> 
    # do something 
</If> 

それはURIから、fileNameとotherstringはを取得することは可能ですか?

%{QUERY_STRING}部分文字列を正規表現で取得することはできますか?または他の?

ありがとうございます。

編集:

私は(今のところ)URIを書き換える必要はありません。 URIには、テキストファイルの名前( "fileName")とこのファイルの情報( "otherString")が含まれます。私はこのファイルにアクセスし、情報がそのファイルに入っているかどうかを確認したい。もしそうなら、私が欲しいものをしてください。私はURIにする2つの部分を分離

/\?file\=(.*)\&/ 
/\&otherString\=(.*)$/ 

は、私は、これら二つの正規表現を持っています。しかし、私は文字列としてURIの部分を取得して操作する方法を(もし可能であれば)使用する方法を知らない。

+0

質問を編集して、書き直しの例を追加してください。 –

答えて

1

Apacheはこれに最適なツールではありません。

%{QUERY_STRING} =~ /(?:^|&)fileName=([^&]+)&otherString=([^&]+)/のような正規表現で必要なパラメータの値をクエリ文字列から抽出することができます。 というファイル名の値は、逆参照変数$1と、otherString,で検索できます。

しかし、正規表現で逆参照変数を再利用することはできないようです。

ので、完全一致のために:

<If "%{QUERY_STRING} =~ /(?:^|&)fileName=([^&]+)&otherString=([^&]+)/ && file(%{DOCUMENT_ROOT} . '/' . $1) == $2"> 

(非マッチを!===を変更)

文字列はファイル中のどこに見つけることができるならば、私がしてきた最高の見つけることができます:

<If "%{QUERY_STRING} =~ /(?:^|&)fileName=([^&]+)&otherString=([^&]+)/ && file(%{DOCUMENT_ROOT} . '/' . $1) -strmatch '*$2*'"> 

(その否定のためにfile(!を追加)

エラーログに無駄なノイズが入るのを避けるため、他の2つの間に&& -s %{DOCUMENT_ROOT} . '/' . $1のようなテストを追加することをお勧めします。

+0

ありがとう、それは良い状態を構築するのに役立ちました。 –

関連する問題