使用www从非www http重定向到https

时间:2016-06-14 17:08:23

标签: apache http redirect mod-rewrite https

我正在尝试将旧网站从http重定向到https,同时从非www重定向到www。我们目前有许多链接,这些年来我们通过非www& http版本的网站,我想减少重定向的数量,因为不想被“link-juice”稀释。我们还有来自https //非www和http // www:/

的链接

目前,重定向架构如下所示:

http://domain.com/oldpage.html
301永久移动
https://domain.com/oldpage.html
301永久移动
https://www.domain.com/newpage.html
200 OK

是否有一种解决方法可以减少301重定向? 例如:http // domain.com / oldpage.html - >到https://www.domain.com/newpage.html

3 个答案:

答案 0 :(得分:1)

这就是您想要的.htaccess

只有1个重定向,无论它是不安全(http),顶点(www-less)还是两者:

# canonical redirect http → https ( with optional www complection)
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com [NC]
RewriteRule ^/?(.*) https://www.example.com/$1 [L,R=301]

# https:// apex →  https:// www.*
RewriteCond %{HTTP_HOST} ^(?!www\.)example.com [NC]
RewriteRule ^/?(.*) https://www.example.com/$1 [L,R=301]

答案 1 :(得分:0)

是的,这很容易理解 在与

首选表单匹配的任何请求URL上运行正则表达式
  

https://www

就像在javascript /^https:\/\/www\..*$/.exec(url)中一样 如果返回非null值 这意味着https& www表格

否则,如果其中一个人对您的规则进行了修改,例如http或非www网址或所有这些规则 解析网址并提取路径,然后将其附加到您的完美网址

var redirectURL = "https://www.yourDomain.com"+path;

然后将重定向请求发送到这个完美的表单。

来自此请求:

  

http://yourDomain.com/something

重定向到新网址

  

https://www.yourDomain.com/something

只需一次重定向回复

答案 2 :(得分:0)

   NameVirtualHost *:80
   <VirtualHost *:80>
   ServerName example.com
   ServerAlias www.example.com
   RedirectPermanent / https://www.example.com
   </VirtualHost>

   <VirtualHost *:80>
   ServerName example.net
   ServerAlias www.example.net
   DocumentRoot /var/www/html/example.net
   RedirectMatch "old-page$" "https://www.example.com/new-page”
   </VirtualHost>

   <VirtualHost *:443>
   ServerName www.example.com
   ...
   </VirtualHost>

参考:https://wiki.apache.org/httpd/RedirectSSL