这个htaccess代码说的是什么?

时间:2014-01-01 19:31:16

标签: apache .htaccess mod-rewrite redirect rewrite

我有这段代码:

   RewriteEngine On
   RewriteBase /
   RewriteCond %{HTTP_HOST} !^domain\.com$ [NC]
   RewriteRule ^(.*)$ https://domain.com/$1 [R=301,L]

我知道它做了什么,它做得很好! (如果有人使用非https网址访问该网页,则代码使用https网址表示)。 但我的问题是,我不了解病情,我不明白它为什么会这样做,它做了什么。 所以如果你帮助我理解这段代码的工作条件和方式,我将感激不尽。

1 个答案:

答案 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]