两个域名之间的转发指向服务器的同一目录,而无需改变 URL

两个域名之间的转发指向服务器的同一目录,而无需改变 URL

我有domain1.comdomain2.com

domain1.com是指向服务器IP123.123.123.123准确到目录的主域名public_html

domain2.com是我想要转发到的域domain1.com,而不更改用户浏览器中的 URL。(注意:此域将是用户个人资料的域)。

domain1.com/users/John因此,我不会输入 ,而是输入domain2.com

domain2.com指向同一个IP地址123.123.123.123,并且指向同一个目录domain1.compublic_html)。

我指向domain2.com同一个服务器和目录,从 的 htaccess 来访问它domain1.com

因此,我尝试了以下.htaccess操作public_html

RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain2.com
RewriteRule ^(.*) https://domain1.sa/users/John/$1 [P]

但这会返回 500 错误 http 代码!

注意:我有一个专用服务器。

答案1

RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain2.com
RewriteRule ^(.*) https://domain1.sa/users/John/$1 [P]

不清楚为什么这会导致 500 错误,除非 mod_proxy 或 mod_rewrite 没有正确安装或配置?或者您可能与其他指令有冲突?您应该检查错误日志以了解错误的具体信息。

但是,如果两个域指向同一个服务器/目录,并且您希望domain2.com在浏览器的地址栏中保留(原始 URL),那么您不必代理请求(正如您在此处尝试的那样)。更简单的内部重写(在同一个域上)似乎就是您所需要的。例如:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain2\.com
RewriteRule !^users /users/John%{REQUEST_URI} [L]

正则表达式!^users是为了避免重写循环(这也会表现为浏览器中的 500 错误)。

domain1.com/users/John因此,我不会输入 ,而是输入domain2.com

但请注意,上述操作会将请求发送至/users/John/(带有尾随斜杠),而不是/users/John(没有尾随斜杠),正如您在此处所述 - 这是个问题吗?

您是否想要按照您发布的代码示例重写从/<something>到?虽然您的问题文本中没有提到这一点?如果您只想重写域本身的请求,即。而不是,那么上面的内容可以进一步简化。例如:/users/John/<something>domain2.com/domain2.com/<something>

RewriteCond %{HTTP_HOST} ^domain2\.com
RewriteRule ^$ /users/John [L]

相关内容