如何将除端口之外的所有内容重写为 HTTPS

如何将除端口之外的所有内容重写为 HTTPS

我在网络服务器上安装了 Netdata 来获取统计数据。要查看这些数据,我应该使用:http://任何:19999。但是,在我的 Web 服务器上,所有内容都会使用以下命令重定向到 HTTPS:

 RewriteEngine On  
 RewriteRule .*   https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]  

有没有好的办法可以确保指向端口 19999 的任何内容都会转到 HTTP?(而不是一次又一次地重定向到 HTTPS ..)
我猜可以通过在显示 RewriteRule 之前设置一些条件来实现,对吗?但怎么做呢?rewriterules 的手册页让我很困惑,所以欢迎任何帮助!

答案1

您可以添加此代码来重定向使用特定端口的所有服务以使用 HTTP 而不是 HTTPS

RewriteEngine On
RewriteCond %{SERVER_PORT} 19999 
RewriteRule ^(.*)$ http://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

您也可以使用此代码来过滤其他端口:

RewriteCond %{SERVER_PORT} !19999

这将针对所有不使用 19999 端口的网页运行下一个代码。

答案2

尝试使用重定向反而:

<VirtualHost *:80>

    ServerName example.com

    Redirect permanent / https://example.com/

</VirtualHost>

相关内容