.htaccess重定向到新域而不重新加载页面



目前,我正在创建一个网站,我希望该网站在不重新加载页面的情况下重定向(通过.htaccess(到另一个域。因为在我看到的所有教程中,它都加载了新域的页面。我想要的是,它在显示新域的URL时保留基本域的页面。

示例:

重定向此站点

https://DOMAIN1.US/folder1/folder2/page.html?param=1&param=2

到这个站点

https://DOMAIN2.US/folder1/folder2/page.html?param=1&param=2

我没有访问主服务器配置的权限。Htaccess不能"虚假重定向"??

你想要的不是一个简单的";重定向";(由浏览器管理(。您需要将承载CCD_ 2的服务器配置为";反向代理"-因为这需要完全在服务器端进行管理。

用户向domain1.com发送请求。domain1.com处的服务器然后构造到domain2.com的内部HTTP请求(反向代理(。来自domain2.com的响应随后被发送回domain1.com处的服务器,服务器随后将(可能"重写"的(响应转发回客户端。

这需要在domain1.com的服务器上启用附加模块,即mod_proxy、mod_proxy_http,以及附加(可选(模块,如mod_proxi_html等,具体取决于您的要求。

理想情况下,您应该在服务器配置(或VirtualHost容器(中对此进行配置。值得注意的是,您需要设置ProxyPassReverse(在服务器配置中(,以涵盖domain2.com向自身发出外部重定向的场景。代理服务器需要重写响应头,以便重定向到domain1.com,而不是domain2.com.htaccess中不能设置ProxyPassReverse

然后,您可以使用P标志将mod_rewrite与mod_proxy一起使用。这部分可以在.htaccess中完成。例如,将请求从https://DOMAIN1.US/folder1/folder2/page.html?param=1&param=2代理到https://DOMAIN2.US/folder1/folder2/page.html?param=1&param=2

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www.)?domain1.us [NC]
RewriteRule ^ https://domain2.us%{REQUEST_URI} [P]

如果您可以访问服务器配置,那么您可以使用ProxyPass指令更简单地执行此操作(在本例中不需要mod_rewrite,因为源URL和目标URL相同(。

参考:

  • https://httpd.apache.org/docs/2.4/mod/mod_proxy.html

最新更新