【问题标题】:Rewrite all traffic to https with port使用端口将所有流量重写为 https
【发布时间】:2015-08-21 15:35:13
【问题描述】:

安装了一个 vServer 和 plesk(Apache 后端,Nginx 反向代理),plesk 正在侦听端口 8443。 我使用主机名作为域以便于访问和 SSL 证书域。所以我想将所有流量重定向到特定的:

到目前为止我得到的是这条规则

return 301 https://www.DOMAIN.com:8443/;

这会将所有内容引导至 Plesk Panel URL,但如果有人正在使用它

https://DOMAIN.com:8443 

他不会被重定向到

https://www.DOMAIN.com:8443

并且 SSL 证书不起作用(基于域)。如何强制每个流量(端口 80 和 8443 的 http 和 https)到

https://www.DOMAIN.com:8443

提前致谢

【问题讨论】:

  • 您不能可靠地将https://domain.com 重定向到https://www.domain.com,因为浏览器首先会拒绝建立连接。除此之外,return 301 url 的语法对我来说并不熟悉。这是 nginx 语法吗?如果是这样,为什么这个问题被标记为.htaccess
  • 因为无论如何我都愿意接受基于 Nginx 或 htaccess 的解决方案,如果这不是“可能的”,我会为 DOMAIN.COM 购买第二个 SSL 证书......只是想避免成本;)
  • 请分享您的整个 Nginx 配置。

标签: .htaccess nginx plesk


【解决方案1】:

你可以用 HTACCESS 来做:

守则

RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule (.*) https://www.%{HTTP_HOST}%{REQUEST_URI}:8443 [R=301,L]

它的作用是检查用户是否尝试在不使用 www 的情况下访问该站点,如果是,则在您想要的特定端口上重定向到 www。

如果您已经将端口 80 的流量重定向到端口 8443,而您只想重定向 www 的规则,那么我上面列出的内容将起作用。您还可以根据使用的端口让 mod 重写重定向。

看起来像这样:

守则

RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{SERVER_PORT} ^80$
RewriteRule (.*) https://www.%{HTTP_HOST}%{REQUEST_URI}:8443 [R=301,L]

您只需要确保您使用的每个虚拟主机都有适当的 mod 重写规则。您可能必须为要使用的额外端口创建一个虚拟主机。这些虚拟主机唯一拥有的是重定向规则。否则可能会出现 404 错误。

【讨论】:

    猜你喜欢
    • 2014-03-11
    • 2014-11-29
    • 2014-08-23
    • 2013-01-06
    • 2014-04-27
    • 2011-03-15
    • 2016-09-26
    • 2016-07-27
    • 2020-05-16
    相关资源
    最近更新 更多