我看过很多关于重写的文章。都好。但没有人涵盖这种确切的情况。所以这是我的问题:希望你能提供帮助。因为我无法让它发挥作用。
当我们执行所有四个测试用例时,3个可以,1个不是
问题:现在为什么4号https://www给我这个错误。我希望第一条规则能够接收并将我们发送到非www版本。我该如何解决这个问题?
感谢任何帮助; P Sean
这是我目前的htaccess
<IfModule mod_rewrite.c>
RewriteEngine on
# Redirect www to non-www first
# Added based on article http://stackoverflow.com/questions/234723/generic-htaccess-redirect-www-to-non-www
RewriteCond %{HTTP_HOST} ^www\.(.+) [NC]
RewriteRule ^(.*) https://%1/$1 [R=301,NE,L]
# Then redirect http to https (if necessary)
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R=301,L]
</IfModule>
答案 0 :(得分:2)
您可以在.htaccess中使用此功能:
<IfModule mod_rewrite.c>
RewriteEngine on
# Redirect www to non-www first
RewriteCond %{HTTP_HOST} ^www\.(.+) [NC]
RewriteRule ^(.*) https://%1/$1 [R=301,NE,L]
# Then redirect http to https (if necessary)
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [NE,L,R=301]
</IfModule>
但是,对于证书错误,你无能为力 阅读:Redirecting https://www to https://non-www - without seeing certificate error, possible?
答案 1 :(得分:0)
这不可能仅通过htaccess或nginx conf来解决。
需要证书才能涵盖域名的www和非www版本
通配符证书或多域证书,其中www和非www都包含在一个单独的域中
希望有所帮助