我有domain1.com
和domain2.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.com
(public_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]