Apache-Httpd

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

  • April 22, 2021

我有以下虛擬主機將 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/

哪個重寫規則可以解決這樣的問題?

這能解決你的問題嗎?

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

它應該替換您的 Redirect… 行

RedirectMatch 會將http://site.mydomain.com>重定向到<https://site.mydomain.com>,但不會重定向到<http://site.mydomain.com/about。為了實現後者,您可以使用以下重寫規則(同樣,代替您的 Redirect 行):

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

將尾隨添加/到您的重定向 URL:

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

沒有它,例如http://site.mydomain.com/@google.com/>會被重定向到<https://site.mydomain.com@google.com/失去的地方/

引用自:https://unix.stackexchange.com/questions/646273