将一个域的子域重定向到另一个域,而不更改 URL(屏蔽)

Redirecting subdomain of one domain, to another domain, without changing the URL (masking)

提问人:Invidia 提问时间:11/14/2023 最后编辑:Invidia 更新时间:11/14/2023 访问量:19

问:

我真的被困在试图让一些mod_rewrite规则在 Apache 上工作。

我在 example.com 上有一个 WordPress 网站,希望 pay.example.com 在不丢失原始 URL 的情况下重定向和提供 newdomain.com,example.com

两个域位于同一台服务器上,指向同一域。

我们已经多次尝试修改我们的 mod_rewrite/.htaccess 配置:

原始WP .htaccess:(我们在这之后添加了我们的行)https://wordpress.org/documentation/article/htaccess/

此外,我们添加了以下行来尝试创建重定向/URL 掩码:

第一:

RewriteCond %{HTTP_HOST} ^pay.example.com/
RewriteRule ^(.*) http://newdomain.com/$1 [P]

第二:

RewriteCond %{HTTP_HOST} ^pay\.)?example\.com$ [NC]
RewriteRule ^ http://newdomain.com/%{REQUEST_URI} [L,P]

作为最后的手段:

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

我们还尝试将它们放在文件的顶部,紧接在 RewriteEngine On 之后......

理想情况下,这就是我们正在努力实现的目标:

当有人点击 example.com 上的产品时,它会将他们重定向到被 pay.example.com 掩盖的 newdomain.com

apache .htaccess mod-rewrite url-rewriting virtualhost

评论

0赞 arkascha 11/14/2023
该标志将始终实现外部重定向,这显然不是您想要的。实际上,您根本不想要重定向,而是内部重写或代理(标志)。代理方法可以工作,但它有一个巨大的性能劣势(每个请求都必须转换为第二个内部请求,这是一个相当大的开销)。考虑一下,如果你真的不能使用简单的内部重写来实现你正在寻找的任何内容。RP
0赞 arkascha 11/14/2023
您应该修改您的问题(下面有一个“编辑”链接)以添加有关 http 主机布局的信息。你只说它们来自同一个系统。但是,它们是否共享一个共同的主机定义,那么它们是别名还是单独的主机?是共享的还是独立的?DOCUMENT_ROOT
0赞 Invidia 11/16/2023
@arkascha它们是单独的文档根目录,我将编辑问题。谢谢。

答: 暂无答案