如何使用 .htaccess 屏蔽域名?



我们有以下情况:

我们希望设置域掩码,以便从项目平台向最终用户提供内容。最终用户已设置从player.domain-client.com.app.domainA.comCNAME记录

现在,当最终用户输入https://player.domain-client.com/5432时,他应该获取https://app.domainA.com/player/?=5432的内容。 但网址应保持https://player.domain-client.com/5432. 仅当客户端子域包含player时,才应应用此屏蔽。

任何人都可以指出我如何设置.htaccess的正确方向,以便它进行正确的屏蔽吗?

最终用户已设置从player.domain-client.com.app.domainA.comCNAME记录

据推测,"项目平台"也已配置为接受player.domain-client.com的请求?

在这种情况下,它应该只是一个简单的内部重写(在同一主机上(的问题。虽然,如果您通常会在app.domainA.com处请求相同的 URL 路径,即。app.domainA.com/5432,那么没有什么需要做的,因为重写已经到位了?否则,请尝试以下操作:

RewriteEngine On
# Rewrite any request for /<number> to player/?=<number>
RewriteCond %{HTTP_HOST} ^player. [NC]
RewriteRule ^(d+)$ player/?=$1 [L]

但是,/player/?=5432不是实际的端点,因为这需要系统进一步重写才能"工作"。也许你的意思是像/player/index.php?=5432?(查询字符串也有点奇怪,因为缺少参数名称?如前所述,这可能需要手动解析查询字符串以提取值?

条件(RewriteCond指令(确保仅重写对player子域的请求。

在WordPress上,您需要确保这些指令在WP前端控制器之前。在# BEGIN WordPress部分之前。指令在.htaccess中的顺序很重要。

但是,如果这一切都由WordPress管理,那么您不能简单地在.htaccess中创建重写,因为WordPress仍然看到请求的原始URL,而不是重写的URL。因此,除非请求的URL作为WordPress本身的有效路由存在,否则您可能会得到404。这种重写需要在WordPress本身内部进行管理。

使用反向代理的替代解决方案

另一种方法是将服务器配置为反向代理,并将请求从https://player.domain-client.com/1234代理到https://app.domainA.com/player/?vid=1234(在注释中提到(。理想情况下,这需要访问主服务器配置才能正确配置(需要mod_proxy和ProxyPassProxyPassReverse在虚拟主机中设置适当的指令(。

然后,在.htaccess中,您将使用RewriteRule上的P标志来执行类似以下步骤的操作:

# Proxy any request for /<number> to player/?=<number>
# for the "player" subdomain only.
RewriteCond %{HTTP_HOST} ^player. [NC]
RewriteRule ^(d+)$ https://app.domainA.com/player/?vid=$1 [P]

最新更新