次の行があります。
RewriteRule ^page.php?var1=([0-9]+)&var2=(.*)&var3=(.*)$ index.php?module=page&var1=$1
この URL のディレクトリにアクセスすると: page.php?var1=24&var2=346adf&var3=asdf
それは正規表現をしません。手がかりを持っている人はいますか?
次の行があります。
RewriteRule ^page.php?var1=([0-9]+)&var2=(.*)&var3=(.*)$ index.php?module=page&var1=$1
この URL のディレクトリにアクセスすると: page.php?var1=24&var2=346adf&var3=asdf
それは正規表現をしません。手がかりを持っている人はいますか?
基本的にあなたのルールは間違っています。理由: REQUEST_URI を使用してのみ一致させることRewriteRule
ができますが、そこにある 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]
私はこれをお勧めしません。スクリプトでクエリ文字列を解析することをお勧めします。
最初に気付くのは、? おそらくエスケープする必要があります。