.htaccess 将所有请求(ssl 和非 ssl)重定向到 https ://domain. com

标签 .htaccess redirect ssl

我在我的域上使用 Let's Encrypt SSL,不幸的是它只保护我的 domain.com 而不是 www.domain.com。

So, I want
http://domain.com
http://www.domain.com
https://www.domain.com

重定向到

https://domain.com

现在我设法让它工作,除了https://www显示 SSL 错误。

有人可以帮忙吗?

我的 htaccess:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# remove .php; use THE_REQUEST to prevent infinite loops
RewriteCond %{THE_REQUEST} ^GET\ (.*)\.php\ HTTP
RewriteRule (.*)\.php$ $1 [R=301]
# remove index
RewriteRule (.*)/index$ $1/ [R=301]
# remove slash if not directory
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} /$
RewriteRule (.*)/ $1 [R=301]
# add .php to access file, but don't redirect
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteCond %{REQUEST_URI} !/$
RewriteRule (.*) $1\.php [L]

<ifModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file .(html?|txt|css|js|php|pl)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule>


<IfModule mod_deflate.c>
  # Compress HTML, CSS, JavaScript, Text, XML and fonts
  AddOutputFilterByType DEFLATE application/javascript
  AddOutputFilterByType DEFLATE application/rss+xml
  AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
  AddOutputFilterByType DEFLATE application/x-font
  AddOutputFilterByType DEFLATE application/x-font-opentype
  AddOutputFilterByType DEFLATE application/x-font-otf
  AddOutputFilterByType DEFLATE application/x-font-truetype
  AddOutputFilterByType DEFLATE application/x-font-ttf
  AddOutputFilterByType DEFLATE application/x-javascript
  AddOutputFilterByType DEFLATE application/xhtml+xml
  AddOutputFilterByType DEFLATE application/xml
  AddOutputFilterByType DEFLATE font/opentype
  AddOutputFilterByType DEFLATE font/otf
  AddOutputFilterByType DEFLATE font/ttf
  AddOutputFilterByType DEFLATE image/svg+xml
  AddOutputFilterByType DEFLATE image/x-icon
  AddOutputFilterByType DEFLATE text/css
  AddOutputFilterByType DEFLATE text/html
  AddOutputFilterByType DEFLATE text/javascript
  AddOutputFilterByType DEFLATE text/plain
  AddOutputFilterByType DEFLATE text/xml

  # Remove browser bugs (only needed for really old browsers)
  BrowserMatch ^Mozilla/4 gzip-only-text/html
  BrowserMatch ^Mozilla/4\.0[678] no-gzip
  BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
  Header append Vary User-Agent
</IfModule>


## EXPIRES CACHING ##
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/gif "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/pdf "access plus 1 month"
ExpiresByType text/x-javascript "access plus 1 month"
ExpiresByType application/x-shockwave-flash "access plus 1 month"
ExpiresByType image/x-icon "access plus 1 year"
ExpiresDefault "access plus 2 days"
</IfModule>
## EXPIRES CACHING ##

最佳答案

当您加载受证书保护的站点(即以 https: 开头的内容)时,客户端

  1. 做 DNS 解析并连接到 IP 地址
  2. 通过 SSL handshake它从服务器获取证书
  3. 通过现在安全的 channel 执行 HTTP 请求,发送您在浏览器地址栏中设置的主机名

现在在第 2 步和第 3 步之间,浏览器将意识到服务器提供的 SSL 证书拥有与您请求的主机名 (domain.com) 不同的主机名 (www.domain.com) ),并会发出警告。

这里唯一的解决办法是得到一个 wildcard certificate对于 *.domain.com,这对 domain.comwww.domain.com 都有效(但是,据我所知请记住,不是 my.sub.domain.com)。

关于.htaccess 将所有请求(ssl 和非 ssl)重定向到 https ://domain. com,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38740240/

相关文章:

apache - 重写多个 URLS

php - 搜索引擎友好页面链接问题

apache - 是否可以重定向子域但不能重定向子域的子域?

php - HTML 公式重定向到 XAMPP 本地主机主页

scala - 使用 Scala Process 方法时如何使用重定向

Python - Oauth2 的 SSL 问题

apache - Ubuntu 14.4.01 子域上的 Symfony2 - 缺少 Assets

.htaccess - 使用 .htaccess 在两个页面上强制使用 http

c - libssh2 channel SSL BIO 使用

.htaccess 不适用于 Railo 上的 .cfm 页面