我有这段代码:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^domain\.com$ [NC]
RewriteRule ^(.*)$ https://domain.com/$1 [R=301,L]
我知道它做了什么,它做得很好! (如果有人使用非https网址访问该网页,则代码使用https网址表示)。 但我的问题是,我不了解病情,我不明白它为什么会这样做,它做了什么。 所以如果你帮助我理解这段代码的工作条件和方式,我将感激不尽。
答案 0 :(得分:0)
如果有人使用非https网址访问该网页,则该代码使用https网址表示
实际上不,这不是它的作用,确切地说。条件检查主机名(http://
或https://
之后和下一个/
之前的所有内容。是不“domain.com”,如果是这种情况,它会将每个请求重定向到“domain.com”主机的 https 版本。
因此,如果您转到http://domain.com/
,则将不会重定向。
但是,如果您转到http://www.domain.com/
, 将被重定向到“domain.com”的 https ,而不会显示“www”。
因此规则基本上强制要求的主机名始终“domain.com”,并且恰好重定向到HTTPS。
如果要强制使用HTTPS,可以添加其他条件:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^domain\.com$ [NC]
RewriteRule ^(.*)$ https://domain.com/$1 [R=301,L]