重定向网站,但在地址栏中保留原始网址
Posted
技术标签:
【中文标题】重定向网站,但在地址栏中保留原始网址【英文标题】:Redirect website but keep the original url in the address bar 【发布时间】:2017-05-09 22:06:48 【问题描述】:我有一个本地域名 .dz,它不允许 DNS 更改,我想将域和所有页面重定向到另一个域 。 com,并将.dz地址保留在地址栏中,完全隐藏.com域。
我已经搜索了整个互联网所有解决方案都没有这样做,有些会重定向到 .com 并且 .com 会显示在地址栏中,而有些则只重定向主页。
我想知道这是否是一个 php 函数,可以直接从 .com 域读取,然后将内容写入 .dz 域
我可以访问 .htaccess 或 PHP 文件。
【问题讨论】:
您在寻找pointing-two-urls-to-the-same-website 或Setup Multiple Domains Pointing to the Same Directory 正如我询问和强调的那样,我无法更改 DNS 区域,因此我无法停放我的域! 您有权访问服务器配置吗?或者只是.htaccess
?
@w3dk .dz => htaccess /////// .com => 一切
【参考方案1】:
我假设您可以访问httpd.conf
或conf
目录,
在您的httpd.conf
中提到 mod_proxy 的部分尝试此操作。
ProxyPass / http://yourwebsite.com/ smax=0 ttl=60 retry=5
ProxyPassReverse / http://yourwebsite.com/ smax=0 ttl=60 retry=5
如果您必须将上述规则放在名为 httpd-ajp.conf
的单独 conf 文件中,您会在 conf/extra
目录中找到它。
完成后,您必须在尝试检查之前重新启动服务器。
编辑
正如您所说,您无权访问conf
目录,您可以在.htaccess
中尝试以下规则
RewriteEngine On
RewriteRule ^(.*)$ http://domain.com/$1 [P]
但您必须确保 mod_proxy 已启用,如果您可以向您的托管服务提供商询问,这些行必须在 httpd.conf
中取消注释。
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
【讨论】:
我无权访问 .dz 域中的 httpd.conf【参考方案2】:在.htaccess
中尝试使用代理:
RewriteEngine on
RewriteRule ^ http://domain.com%REQUEST_URI [NE,P]
如果网站很简单,这可能对您来说已经足够了。
【讨论】:
我刚试了两台服务器,效果很好。 (但是,它不适用于 https 的代理)。在您的情况下,我认为目标服务器正在阻塞或重定向。 @Séddik 你说的“没用”是什么意思?有什么错误吗?mod_proxy
和mod_proxy_http
都需要在您的源服务器上启用(即example.dz
)。 (旁白:这里不需要L
标志,P
暗示L
。)
.com网站显示在地址栏中,尝试了多个浏览器并清除了应用程序缓存并尝试了隐身和隐私模式,没有运气
@Séddik 您是否正在代理 canonical 域?您的.com
域中是否有任何规范的重定向? IE。如果您代理到example.com
并且您的.com
站点具有到www.example.com
的规范重定向,那么这将是您的重定向。 (?)【参考方案3】:
事实上,Web 应用程序应该托管在 .dz 域中,您应该将 .com 永久重定向到 dz。 无论您做什么除了在 dz 域中更改 DNS 之外,这将是对 .com 的请求,而不是对自身(dz 域名)的请求。
我的意思是没有办法,除非您想映射所有 url 并为每个请求制作一个 curl 到 .com 并更改 DOM 文件并打印它。或使用 Iframe,这意味着您也应该保留 .com 域。
【讨论】:
反之,我的应用程序托管在 .com 上,我想将其重定向到 => .dz,并用于 iFrame解决方案对 SEO 友好吗??!! 正如您所说的“在地址栏中保留 .dz 地址”,您应该 1) 在 dz 中托管应用程序并将 com 重定向到它 [301 重定向]。或 2) 将应用程序保留在 com 中并将 .dz dns 更改为 .com ip 并使用 com 中的域别名进行处理。关于 iframe 和 seo。当然不。即使保留两个站点也不是一个好的解决方案,因为一个是另一个的副本。你应该使用 301 重定向 如果我在 .dz 上托管我的应用程序,我将不需要 .com,因为 .dz 太慢且不允许更改 DNS,这就是我保留 .com 的原因我想将“慢速主机”.dz 重定向到“快速主机”.com 有两种方法可以将域绑定到另一个主机:域所有者可以随时通过更改域 ns 名称(ns1 和 ns2 和...)来更改它,并将其绑定为停放或别名域在其他主机中 - 或者如果它绑定到具有 dns 管理的主机,您可以在主机上创建 A 记录并将其作为停放或别名域再次添加到其他主机。就是这样。 在我的问题中很明显我没有办法,请先阅读我的问题!【参考方案4】:有一种方法,只要它们是分开托管的,但是,您的 .com 将需要运行和工作。
这与原始 Facebook 应用系统相同,任何发送到其 URL 然后读取并呈现输出的内容。无论是 GET、POST 还是标头
基本上,它是一个 PHP 脚本代理,不会更改或添加任何东西到它所代理的服务的输出
<?php
$protocol = "http";
$domain = "domain.com";
$ch = curl_init();
$requestPath = $_SERVER['REQUEST_URI'];
$queryString = http_build_query($_GET);
curl_setopt($ch,CURLOPT_URL, $protocol.'://'.$domain.$requestPath);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
$mode = $_SERVER['REQUEST_METHOD'];
$headers = getallheaders();
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
if ($mode == 'POST')
curl_setopt($ch,CURLOPT_POST, count(http_build_query($_POST)));
curl_setopt($ch,CURLOPT_POSTFIELDS, http_build_query($_POST));
$response = curl_exec($ch);
$header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
$header = substr($response, 0, $header_size);
$body = substr($response, $header_size);
$headers = explode("\r\n", $header);
unset($headers[0]);
echo "<pre>";
foreach($headers as $val)
if(strpos($val, "Transfer-Encoding") === false)
header("$val");
flush();
echo "</pre>";
//close connection
curl_close($ch);
echo $body;
?>
带有重写文件
RewriteEngine On
RewriteRule .* index.php [L]
如果您将其托管在您的 .dz 域上,它将指向您的 .com,而无需更改域名。
【讨论】:
...这似乎喜欢它可能是一个有用的方法,但一点更多信息会很好。这是如何使用的?我会使用both PHP 代码并 将另一部分放入.htaccess
吗?代码在做什么到底是什么? (另外,请查看How to Answer。)
@ashleedawg 请去阅读如何回答那里没有任何地方说解释你的代码,并且阅读代码没有人应该使用他们无法阅读和理解的代码,因为那样你就不会'不知道它在做什么。【参考方案5】:
此代码将帮助您重定向并保留 URL 之后的所有内容。
RewriteCond %HTTP_HOST ^domainname.com
RewriteRule ^(.*) http://domainname.com/$1 [P]
【讨论】:
【参考方案6】:您已经提到 - '.dz 太慢并且不允许更改 DNS,这就是为什么我保留了一个 .com 并且我想将“慢速托管”.dz 重定向到“快速主机” .com'..
当 .dz 域太慢时,不值得将时间花在整个 Web 流量的重定向上。它会让事情变得更慢。
您可以在慢速托管 .dz 域中放置重定向 html(如元刷新),并直接从 .com 域为用户提供服务。将“慢速托管”.dz 域作为您的主站点对您毫无益处...
【讨论】:
【参考方案7】:要显示来自 DomainB 的内容但显示 DomainA url,有 2 个选项:
1.公园域
如果 DomainB 是您的 primary domain name,只需将 DomainA 添加为 Parked Domain。
2。使用 .htaccess 文件重定向
这个方法是:重定向并保留URL后面的所有内容
第一个选项将在一个 URL 上显示与另一个 URL 相同的所有内容。 为此,您需要修改用户将访问的域的 .htaccess 文件,并插入以下代码行:
RewriteCond %HTTP_HOST ^DomainA.com
RewriteRule ^(.*) http://DomainB.com/$1 [P]
如果您使用的是file manager in cPanel,请确保您可以选择显示已选择的隐藏文件。
【讨论】:
【参考方案8】:@Séddik,请在您的 .htaccess 文件中尝试这样的操作
RewriteCond %HTTP_HOST ^www.your-local-domain.dz
RewriteRule ^(.*) http://www.your-another-domain.com/$1 [P]
这可能对您有所帮助!
【讨论】:
请提供文档以上是关于重定向网站,但在地址栏中保留原始网址的主要内容,如果未能解决你的问题,请参考以下文章
实施 HTTP 到 HTTPS 重定向,保留 Google Analytics(分析)引荐来源网址
在Chrome中,最终使用带有正则表达式的重定向扩展程序,如何将所有facebook.com网址重定向到mbasic.facebook.com URLS