apache将http重定向到https,将www重定向到非www

mis*_*cus 21 apache .htaccess ssl redirect

基本上我想要的是重定向请求使用HTTPS而不是http

到目前为止,我已经在我的htaccess中使用了这个并且效果很好:代码:

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteCond %{HTTPS} off 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 
</ifModule> 
Run Code Online (Sandbox Code Playgroud)

今天有人注意到,当他去 http://www.example.com时,它会重定向到并显示一个不安全的连接东西.

我的ssl是为非www域设置的:mydomain.com

所以我需要确保所有网站请求都发送到非www和https:如果我将example.com重定向到https://example.com,它可以正常工作

但是通过www.example.com,它会转到htts://www.example.com并显示错误

我需要添加到我的代码中以将www重定向到非www然后再转到ssl?

Pie*_*ier 24

您将不得不为www和没有www重新颁发证书.

如果有人通过您的公用名中未包含的域名连接到您的网站,他们将收到警告.

ssl negociation进程在服务器的任何响应之前发生(在您的情况下,重定向),因此在所有情况下,当您使用不在您的公用名中的域时,您的访问者将收到警告.


bay*_*ezy 17

您可以从HTTP_HOST获得所需内容

RewriteEngine On 
RewriteCond %{HTTPS} off 
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.*)$ [NC]
RewriteRule (.*) https://%1%{REQUEST_URI} [L,R=301]
Run Code Online (Sandbox Code Playgroud)

这样它将使主机始终没有子域.

  • @baynezy代码只会重定向非ssl连接.这并不能解决您在访问"https:// www.mysite.com"时将"https:// www.mysite.com"重定向到"https:// mysite.com"的问题或者收到警告的访问者的问题 (8认同)
  • 没有解决`https:// www.mysite.com`重定向到'https:// mysite.com`问题 (5认同)
  • 不过,我认为此答案不会解决OP关于访客收到警告的问题。 (2认同)
  • 我搜索了几个小时,这是唯一有效的答案.请记住,上述评论是正确的.这几乎适用于所有实例,除非它们以`https:// www.而不是`http:// www`开头 (2认同)

Ami*_*kef 5

RewriteEngine On 
RewriteCond %{HTTPS} off
RewriteRule (.*) https://domain.com%{REQUEST_URI} [L,R=301,NC]
RewriteCond %{HTTP_HOST} ^www.domain.com [NC]
RewriteRule (.*) https://domain.com%{REQUEST_URI} [L,R=301,NC]
Run Code Online (Sandbox Code Playgroud)

  • 虽然此代码可能会回答问题,但提供有关此代码为什么和/或如何回答问题的附加上下文可提高其长期价值。 (2认同)