http 到 https 重定向,防止重定向到其他域

http 到 https 重定向,防止重定向到其他域

我有以下虚拟主机重定向 80 到 443:

<VirtualHost *:80>
        ServerName site.mydomain.com
        ServerAlias www.site.mydomain.com
        DocumentRoot /srv/htdocs
        Redirect permanent / https://site.mydomain.com

        <Directory /srv/htdocs>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

</VirtualHost>

问题是它不会阻止重定向到其他站点,例如:

http://site.mydomain.com///.s3.amazonaws.com

http://site.mydomain.com/@google.com/

哪个重写规则可以解决此类问题?

答案1

这能解决您的问题吗?

RedirectMatch "^/$" "https://site.mydomain.com"

它应该取代您的重定向...行

RedirectMatch 将重定向http://site.mydomain.comhttps://site.mydomain.com, 但不是http://site.mydomain.com/about。为了实现后者,您可以使用以下重写规则(再次代替您的重定向行):

RewriteEngine On 
RewriteCond %{HTTPS} off 
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]

答案2

/在重定向 URL 中添加尾随:

Redirect permanent / https://site.mydomain.com/

没有它,例如http://site.mydomain.com/@google.com/被重定向到https://[电子邮件受保护]/缺少的地方/

相关内容