Mod rewrite 如何使用mod_rewrite有条件地重定向到https?

Mod rewrite 如何使用mod_rewrite有条件地重定向到https?,mod-rewrite,redirect,https,Mod Rewrite,Redirect,Https,仅当满足某些条件时,我想使用mod_rewrite重定向到https: 如果URL不包含“管理员”一词 URL确实包含字符串“xyz”(在URL的任何部分,包括querystring中) 这似乎不起作用: RewriteCond %{REQUEST_URI} xyz [NC,OR] RewriteCond %{QUERY_STRING} xyz [NC] RewriteCond %{REQUEST_URI} !administrator [NC] ReWriteCond %{HTTPS} !=

仅当满足某些条件时,我想使用mod_rewrite重定向到https:

如果URL不包含“管理员”一词 URL确实包含字符串“xyz”(在URL的任何部分,包括querystring中)

这似乎不起作用:

RewriteCond %{REQUEST_URI} xyz [NC,OR]
RewriteCond %{QUERY_STRING} xyz [NC]
RewriteCond %{REQUEST_URI} !administrator [NC]
ReWriteCond %{HTTPS} != on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [NC,R,L]
试试这个规则:

RewriteCond %{THE_REQUEST} !administrator
RewriteCond %{THE_REQUEST} xyz
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

在_请求中测试更容易,因为它同时包含路径和查询。但请确保您的xyz不是or的一部分。

我最终使用了一个编码解决方案,因为我无法让它与mod_rewrite一起工作:(

%[HTTPS}!=on
条件下,等号后面的空格是否意味着在那里?由于指令的解析方式,它会导致我的内部服务器错误。@Tim:我想不会,因为HTTPS只能
。此外,空格分隔指令的“参数”并且文字空间必须用
\
转义或放在引号中。