在正则表达式中跳过一个字符串
Skip one string in regex
我有以下 apache 重写规则:
000-default.conf: RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
我该如何更改它以允许所有内容,除非以下字符串在 url 中:tab=availability
?
您可以在 RewriteRule
本身使用否定:
RewriteRule !tab=availability https://%{HTTP_HOST}%{REQUEST_URI} [L,NC,R]
这将重定向所有 URI 不包含给定模式的请求。但是,如果您在 .htaccess
中使用上述规则,那么最好添加
RewriteCond %{HTTPS} off
避免重定向循环。
此外,如果您想避免在 URL 中匹配给定模式 anywhere,包括 QUERY_STRING
,则在您的条件中使用 THE_REQUEST
变量:
RewriteCond %{HTTPS} off
RewriteCond %{THE_REQUEST} !tab=availability [NC]
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,NC,R]
我有以下 apache 重写规则:
000-default.conf: RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
我该如何更改它以允许所有内容,除非以下字符串在 url 中:tab=availability
?
您可以在 RewriteRule
本身使用否定:
RewriteRule !tab=availability https://%{HTTP_HOST}%{REQUEST_URI} [L,NC,R]
这将重定向所有 URI 不包含给定模式的请求。但是,如果您在 .htaccess
中使用上述规则,那么最好添加
RewriteCond %{HTTPS} off
避免重定向循环。
此外,如果您想避免在 URL 中匹配给定模式 anywhere,包括 QUERY_STRING
,则在您的条件中使用 THE_REQUEST
变量:
RewriteCond %{HTTPS} off
RewriteCond %{THE_REQUEST} !tab=availability [NC]
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,NC,R]