【问题标题】:.htaccess rule to catch http and https.htaccess 规则来捕获 http 和 https
【发布时间】:2015-07-09 21:56:07
【问题描述】:

我们最近更改了域,并在我们的 .htaccess 文件中使用它来重写 URL:

RewriteEngine On
RewriteCond %{HTTP_HOST} old.com [NC]
RewriteRule ^(.*)$ https://new.com/$1 [L,R=301]

我之前意识到旧网站使用的是 https://,所以,所有旧链接都位于此处。如何为 https 和 http 重写此规则?

我尝试将 OR 与另一行与 ${HTTPS_HOST} 一起使用,但没有奏效。

-----编辑-----

澄清一下,这是我想要的结果

http://oldsite.com/* --> https://newsite.com/*

https://oldsite.com/* --> https://newsite.com/*

现在,http://oldsite.com/* 重定向到 https://newsite.com/*,但是

https://oldsite.com/* 重定向到服务器上的主站点。只是从 4403 访问相同的 IP,而不是重定向到 newsite.com

【问题讨论】:

    标签: apache .htaccess mod-rewrite


    【解决方案1】:

    你可以使用:

    RewriteEngine On
    
    RewriteCond %{HTTP_HOST} old\.com$ [NC]
    RewriteCond %{HTTPS}s on(s)|
    RewriteRule ^ http%1://new.com%{REQUEST_URI} [L,R=301]
    

    【讨论】:

    • 这样,https: url 会转到受 SSL 保护的站点(在此 .htaccess 文件所在的服务器上),这不是我想要重定向到的站点。 old.com 被设置为 other.com 的附加域。所以old.com 会转到 other.com,而不是 new.com
    • 好的,那么你能澄清一下你的意思吗我怎样才能为 https 和 http 重写这个规则?
    • 如果你删除这个htaccess,然后在https://oldsite.com/* Chrome 开发工具中访问你会看到什么?
    猜你喜欢
    • 2012-12-29
    • 2011-12-04
    • 1970-01-01
    • 1970-01-01
    • 2013-04-09
    • 2017-02-20
    • 2019-02-04
    • 2013-07-03
    • 1970-01-01
    相关资源
    最近更新 更多