argument=argument 时如何在 .htaccess 中设置规则?
How set rule in .htaccess when argument=argument?
例如:
RewriteCond %{QUERY_STRING} (?)argument=argument
但是:
RewriteCond %{QUERY_STRING} (?)argumentext=argumentext
我找到规则:
RewriteCond %{QUERY_STRING} (?)[a-zA-Z0-9_]=[a-zA-Z0-9_]
但是这条规则只能找到“=”和前后的随机文本,但我需要 when argument=value
示例:
IP - - [DATE] "GET /?value=value HTTP/1.1"
IP - - [DATE] "GET /?random=random HTTP/1.1"
IP - - [DATE] "GET /?qwerty=qwerty HTTP/1.1"
IP - - [DATE] "GET /?randomvalues=randomvalues HTTP/1.1"
当它们相等时需要规则
您可以将此规则与捕获组和 back-reference:
RewriteCond %{QUERY_STRING} ^([^=]+)=$
RewriteRule ^ - [G]
此处RewriteRule ^ - [G]
仅用于测试
解释:
^
: 比赛开始
([^=]+)
:匹配捕获组 #1 中不是 =
的任何字符的 1+
=
:匹配一个=
</code>:匹配与捕获组 #1 中相同的值</li>
<li><code>$
:结束
"GET /?value=value HTTP/1.1"
"GET /?random=random HTTP/1.1"
"GET /?qwerty=qwerty HTTP/1.1"
"GET /?randomvalues=randomvalues HTTP/1.1"
您可以执行类似以下操作来匹配参数名称和值相同的 <something>=<something>
:
RewriteCond %{QUERY_STRING} (?:^|&)(\w+)=(?:$|&)
其中 </code> 是与 URL 参数名称匹配的内部反向引用。</p>
<p>此 <code>name=name
对可以出现在查询字符串中的任何位置,以及其他 URL 参数。但只有整个参数名称会匹配。
例如:
RewriteCond %{QUERY_STRING} (?)argument=argument
但是:
RewriteCond %{QUERY_STRING} (?)argumentext=argumentext
我找到规则:
RewriteCond %{QUERY_STRING} (?)[a-zA-Z0-9_]=[a-zA-Z0-9_]
但是这条规则只能找到“=”和前后的随机文本,但我需要 when argument=value
示例:
IP - - [DATE] "GET /?value=value HTTP/1.1"
IP - - [DATE] "GET /?random=random HTTP/1.1"
IP - - [DATE] "GET /?qwerty=qwerty HTTP/1.1"
IP - - [DATE] "GET /?randomvalues=randomvalues HTTP/1.1"
当它们相等时需要规则
您可以将此规则与捕获组和 back-reference:
RewriteCond %{QUERY_STRING} ^([^=]+)=$
RewriteRule ^ - [G]
此处RewriteRule ^ - [G]
仅用于测试
解释:
^
: 比赛开始([^=]+)
:匹配捕获组 #1 中不是 =
:匹配一个=
</code>:匹配与捕获组 #1 中相同的值</li> <li><code>$
:结束
=
的任何字符的 1+
"GET /?value=value HTTP/1.1" "GET /?random=random HTTP/1.1" "GET /?qwerty=qwerty HTTP/1.1" "GET /?randomvalues=randomvalues HTTP/1.1"
您可以执行类似以下操作来匹配参数名称和值相同的 <something>=<something>
:
RewriteCond %{QUERY_STRING} (?:^|&)(\w+)=(?:$|&)
其中 </code> 是与 URL 参数名称匹配的内部反向引用。</p>
<p>此 <code>name=name
对可以出现在查询字符串中的任何位置,以及其他 URL 参数。但只有整个参数名称会匹配。