在正则表达式中跳过一个字符串

时间:2016-06-28 19:42:56

标签: regex apache apache-config

我有以下apache重写规则:

000-default.conf:    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

除非以下字符串位于网址:tab=availability,否则如何更改此内容以允许所有内容?

1 个答案:

答案 0 :(得分:1)

您可以在RewriteRule本身使用否定:

RewriteRule !tab=availability https://%{HTTP_HOST}%{REQUEST_URI} [L,NC,R]

这将使用不包含给定模式的URI重定向所有请求。但是,如果您在.htaccess中使用上述规则,那么最好添加

RewriteCond %{HTTPS} off

避免重定向循环。

此外,如果您想避免在包含QUERY_STRING的网址中匹配给定模式任何地方,请在您的条件中使用THE_REQUEST变量:

RewriteCond %{HTTPS} off
RewriteCond %{THE_REQUEST} !tab=availability [NC]
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,NC,R]