RewriteCond为没有query_string的url

时间:2017-10-02 11:52:28

标签: apache .htaccess mod-rewrite url-rewriting

如果使用任何query_string捕获网址,可以使用类似RewriteCond %{QUERY_STRING} .*的内容来完成此操作。如何为网址构建条件,根本不包含query_string

我正在尝试RewriteCond %{QUERY_STRING} !.*RewriteCond %{QUERY_STRING} !="" - 没有运气。

更新 最后的任务是抓住

  • 一个。带有一些特殊参数的网址
  • 湾没有参数的网址

我想到了@ arko444提出的建筑:

<IfModule mod_rewrite.c>
RewriteCond %{QUERY_STRING} ^param=(one|two)$ [OR]
RewriteCond %{QUERY_STRING} !.+
RewriteRule .* - [E=INDEX_HEADER:1] 
</IfModule>

<IfModule mod_headers.c>
Header set X-Robots-Tag "index, follow" env=INDEX_HEADER
</IfModule>

1 个答案:

答案 0 :(得分:0)

您需要确保在存在字符串时有(负)匹配,但.*将匹配零个或多个字符,您需要确保< em>一个或多个。因此,改为以下应该有效:

RewriteCond %{QUERY_STRING} !.+
RewriteRule ...  

当查询字符串等于Not (one_or_more_characters)时,这将匹配,即它不是/空