私は次の行を持っている:私はこのURLでディレクトリにアクセスすると.htaccessのこの正規表現が一致しないのはなぜですか?
RewriteRule ^page.php?var1=([0-9]+)&var2=(.*)&var3=(.*)$ index.php?module=page&var1=$1
を:?page.php VAR1 = 24 & var2の= 346adf & VAR3 =
空自それは正規表現を行うdoesntの。誰か手がかりを持っている?
私は次の行を持っている:私はこのURLでディレクトリにアクセスすると.htaccessのこの正規表現が一致しないのはなぜですか?
RewriteRule ^page.php?var1=([0-9]+)&var2=(.*)&var3=(.*)$ index.php?module=page&var1=$1
を:?page.php VAR1 = 24 & var2の= 346adf & VAR3 =
空自それは正規表現を行うdoesntの。誰か手がかりを持っている?
基本的にルールは正しくありません。理由:RewriteRule
を使用してREQUEST_URIを一致させることはできますが、そこにはQUERY文字列を一致させることはできません。
:
RewriteCond %{QUERY_STRING} ^var1=([0-9]+)&var2=[^&]*&var3=.*$ [NC]
RewriteRule ^page\.php/?$ index.php?module=page&var1=%1 [L,NC,QSA]
最初に気づくのは、?おそらくエスケープする必要があります。
エスケープを欠落しているだけでなく、クエリ文字列(?
後のもの)はRewriteRule
マッチングの一部ではありません。 クエリ文字列を照合する場合は、追加のRewriteCond
を使用する必要があります。 例:
RewriteCond %{QUERY_STRING} ^foo=([^&]+)&bar$
RewriteRule ^page\.php$ otherpage.php?x=%1 [QSA]
これはお勧めできません。スクリプト内のクエリ文字列を解析する方がよいでしょう。
http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritecondも参照してください。 – Qtax
ありがとうございます! – dirk
^page \ .php /?$ be^page \ .php \?$ –