的.htaccess重写条件,从HTTP重定向链接到https

问题描述:

我有很多不同的环节,没有任何逻辑规则,重定向与的.htaccess Redirect 301的.htaccess重写条件,从HTTP重定向链接到https

的.htaccess看起来是这样的:

<IfModule mod_rewrite.c> 

    RewriteCond %{HTTP_HOST} ^mysyte.com 

    Redirect 301 /oldlink1 /newlink1 
    Redirect 301 /oldlink1 /newlink1 
    Redirect 301 /oldlink1 /newlink1 

    ... 

几天前我已经设置了https。不幸的是,https://mysyte.com/oldlink...重定向到http://mysyte.com/newlink... - 不是https而是http。

我做错了什么?我应该如何设置.htaccess文件重定向到https?

如果您要改变协议或网站,那么你必须使用一个绝对的URL:

Redirect 301 /oldlink https://example.com/newlink1 
         ^^^^^^^^^^^^^^^^^^^ 

否则它只是一个“本地”重定向和你呆在同一个网站/协议内。请注意0​​不是mod_rewrite的一部分。这是Apache的核心指令(mod_alias的一部分),并且与mod_rewrite完全无关:http://httpd.apache.org/docs/2.4/mod/mod_alias.html#redirect

+0

我更喜欢像/ newlink这样的相关链接,而不是像https://example.net/newlink那样绝对所以问题是关于 – Andrew

+0

那么你卡住了。你不能做一个“本地”重定向,并期望主机或协议改变。你**有**使其成为'重定向'的绝对URL。就像我说的,重定向不是mod_rewrite的一部分,mod_rewrite语义不适用于它。 –

+0

我不知道为什么,但当我试图直接打开链接(在地址栏中键入https://example.com/oldlink1)重定向301打开页面与http协议(http://example.com/newlink1 )。但是当我从https页面(在 Andrew