.htaccess if/else取决于{SERVER_NAME}?

Fra*_*kie 7 apache .htaccess

我有这个.htaccess文件,但我希望它只在我在现场网站时这样做.

有什么办法可以:

// if server_name looks like example.com to this
// else dont run this bit
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} (auth|register|secure|payment|admin|trading_careers)
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(auth|register|secure|payment|admin|trading_careers)
RewriteRule ^(.*)$ http://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
Run Code Online (Sandbox Code Playgroud)

我尝试过SetEnvIfNoCase并且IfDefine没有成功.真的不知道是否有可能做我想做的事.

先感谢您.

编辑(未来读者的解决方案示例):

// if https is off
RewriteCond %{HTTPS} off
// if server_name like example.com (case insensitive) OR
RewriteCond %{SERVER_NAME} =example.com [NC,OR]
// server_name like www.example.com (case insensitive)...
RewriteCond %{SERVER_NAME} =www.example.com [NC]
RewriteCond %{REQUEST_URI} (auth|register|secure|payment|admin|trading_careers)
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.

Gum*_*mbo 5

您可以将此条件添加到规则中:

RewriteCond %{SERVER_NAME} =www.example.com
Run Code Online (Sandbox Code Playgroud)

  • @马库斯·亚当斯(Marcus Adams):领先的=并不是错误,而是故意的。它表示使用简单的字符串比较而不是正则表达式比较。 (3认同)