【问题标题】:RewriteCond to check if a specific Query String does not exist in the URLRewriteCond 检查 URL 中是否不存在特定的查询字符串
【发布时间】:2013-12-09 07:24:08
【问题描述】:

在编写 RewriteCond 以检查 URL 中是否不存在特定的 QueryString 时需要帮助。

如果特定字符串“?nvi”不存在,那么我应该只重定向 URL。

以下规则是我写的,但它不起作用:-

RewriteCond %{QUERY_STRING} !(.*nvi.*) [NC]
RewriteRule . /index.php [L]

但即使 URL 中包含字符串“?nvi”(www.text.com?svi),上述规则也会失败。

请帮助我编写 rewritecond,仅当请求的 URL 中不存在“?nvi”字符串时才会重定向到新 URL。

【问题讨论】:

  • 如果您的意思是 redirect(如外部重定向),您应该使用 [R] 标志。您目前正在进行内部重写。

标签: regex apache .htaccess mod-rewrite


【解决方案1】:

试试这个规则:

RewriteCond %{QUERY_STRING} !^nvi [NC]
RewriteRule ^ /index.php? [L]

? 最终会剥离现有的查询字符串。

【讨论】:

  • 也可以使用QSD标志来移除查询字符串:RewriteRule ^ /index.php [L,QSD]
  • 在 Apache 2.4 之前不存在 QSD 标志
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-16
  • 2014-01-18
  • 1970-01-01
  • 2018-09-28
  • 2011-10-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多