从非www的http重定向到https与www

问题描述:

我试图重定向我们的旧网站从http到https和从非www到www在同一时间。我们目前有很多链接,这些年来我们通过网站的非www版本&获得了很多链接,并且我想减少重定向量,因为不想被“链接果汁”所稀释。我们也有从https //非www链接和http // WWW:/从非www的http重定向到https与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

+0

当然,这是完全可能的。 – ceejayoz

是,很容易理解在匹配首选形式是

该请求的任何URL 运行的正则表达式

https://www

像在JavaScript /^https:\/\/www\..*$/.exec(url) 如果返回非零值 这就是意味着URL folow中的HTTPS & WWW形式

否则,如果他们中的一个vaiolats你的规则,如HTTP或非WWW网址或全部 解析URL,并提取路径才将其附加到你的完美网址

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

,然后发送重定向请求到这个完美的形式。

从这个请求

http://yourDomain.com/something

重定向到新的URL

https://www.yourDomain.com/something

只是一个重定向响应

+0

非常感谢你们俩。这也可以从另一个.domain工作吗?我们有另一个使用另一个域名结尾的组级别网站。我们希望通过一次重定向将某些页面传递到当前网站。 这是否意味着我们可以在组网站上使用这样的设置。 ServerName domain.a ServerAlias www.domain.a 重定向永久/ https://www.domain.b 然后在站点b上指定组url。用一个简单的。 重定向301/old-page/https://www.domain.b/new-page/ – pukander

+0

更简单的方法是:在.a域中,您想要重定向的已知页面只需提取路径并将其附加到完美前缀“https://www.domain.b”+路径并要求重定向到这个完美的URL,即使您可以将路径更改为.b服务器中的相应路径(如果它不同 –

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

这是你想要在你.htaccess

只有1个重定向什么,如果不管它是不安全的(HTTP),顶(WWW-以下)或两者:

# 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]