gpt4 book ai didi

Apache RewriteRule 用于删除任何域名上的端口

转载 作者:行者123 更新时间:2023-12-02 06:49:15 28 4
gpt4 key购买 nike

我有一台具有一个 IP 地址的虚拟服务器,为几个不同的站点提供服务。其中之一带有 SSL 证书。

我需要在第二个域上添加 SSL 证书供我自己私有(private)使用,由于我只有一个 IP 地址,所以我将其添加到端口 8080 上。这很好用。

我现在的问题是,如果在该域上请求端口 8080,则指向服务器的所有域都将显示我的私有(private)站点。


https://example1.com:8080/-> 将显示我的私有(private)网站,但不应该
https://example2.com:8080/-> 将显示我的私有(private)网站,但不应该
https://desired-domain.com:8080/-> 将显示我的私有(private)网站,这是正确的!

任何访问 https://example1.com:8080/ 的人都应该被重定向到 http://example1.com/,对于 example2 也是如此.com

我尝试过...


RewriteCond %{HTTP_HOST} !所需\-domain\.com [NC]


重写规则 ^(.*)$ http://%{HTTP_HOST}$1 [L,R=301]

...但端口附加到 HTTP_HOST,因此它显示为 http://example1.com:8080/

所以,简而言之,我的问题是:如何重定向到请求的主机,但忽略请求端口?

<小时/>

额外

我已经尝试过了...


RewriteCond %{HTTP_HOST} !(desired-domain.com):8080$ [NC]


重写规则 ^(.*)$ http://%1$1 [L,R=301]

...但它重定向到http://localhost/。不过,这比显示错误站点的页面要好,因为无论如何没有人应该在任何其他域上请求端口 8080!

我怀疑有更好的“desired-domain.com”正则表达式,但我的正则表达式魔力今天没有流动。

最佳答案

也许可以尝试一下:

RewriteCond %{HTTP_HOST} ^(example[12].com):8080$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [L,R=301]

显然,您需要对 HTTP_HOST 正则表达式更加聪明,如果没有简单的方法将 example1 和 example2 域封装在单个正则表达式中,您可以使用其中的 2 个并使用 [或]:

RewriteCond %{HTTP_HOST} ^(example1.com):8080$ [NC,OR]
RewriteCond %{HTTP_HOST} ^(example2.com):8080$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [L,R=301]
<小时/>

编辑:

您无法匹配像 !(desired-domain.com):8080$ 这样的反向引用,因为 ! 表示它不匹配。但你可以尝试这样的事情:

RewriteCond %{HTTP_HOST} !^desired-domain.com(:8080)?$ [NC]
RewriteCond %{HTTP_HOST} ^(.*):8080$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [L,R=301]

关于Apache RewriteRule 用于删除任何域名上的端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9611521/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com