VirtualHost中的SSL重定向导致url中断


4

我最近通过网站配置通过https指导所有流量。我这样做是通过修改vhost文件来显示的

<VirtualHost *:80>
    DocumentRoot "/srv/http/example"
    ServerName example.com
    Redirect permanent / https://example.com/
</VirtualHost> 

当我访问网站的根目录,例如example.com时,这工作正常,但是当我尝试转到子目录时,我在网址中得到一个奇怪的中断。例如,如果我输入example.com/blog,它会尝试重定向到https://example.comblog。这里发生了什么?


如果Redirect线变为Redirect permanent / https://example.com(例如没有斜线斜线),则无法重现此错误。使用上面的配置,重定向可以正常工作。
masegaloeh 2014年

我尝试删除尾随/和使用RedirectMatch permanent ^/(.*)$ https:/example.com/$1,但都没有工作。
stmfunk 2014年

Answers:


4

我设法通过改变来解决问题:

https://example.com/

https://example.com\/

这似乎解决了这个问题,我认为在某些时候Apache剥离了斜线。


1

要将TLS / SSL站点重定向到非TLS站点,请参阅以下详细信息:

添加尾部斜杠,并使用反斜杠转义它会恢复缺少的斜杠。

我发现我的特定站点需要在两个虚拟主机(*:80和*:443)中进行重定向,但是TLS没有正常工作。以下添加到两个虚拟主机修复了该问题。

Redirect permanent "/" http://example.com\/  

注意:apache文档显示在所有内容周围添加引号。在我的情况下,上面的工作正常,允许URL中的页面按预期解析。资料来源:https//httpd.apache.org/docs/2.4/en/rewrite/avoid.html

从Source推断出的例子:

Redirect "/one/" "http://one.example.com/"
Redirect permanent "/" "http://example.com/"

希望这有助于某人。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.