这几乎是滑稽的,但我被困在了这一点上。情况如下:
current host: no root access, can really only work in .htaccess
current host: site to be moved to new host is on a shared IP address
current host: site has .htaccess redirecting all non-www traffic to www.
new host: root access, WHM, all the knobs/dials
new host: mod_userdir is disabled
好的。因此,在当前主机上我无法添加这样的 .htaccess 重定向:
RewriteRule ^(.*)$ http://1.2.3.4/~accountname/$1 [R=301,L]
因为 mod_userdir 在新主机上被禁用了——而且我被告知启用它并不是一件简单的事情。因此 IP 地址和帐户名将无法解析。
太好了 - 所以在新主机上让我们将网站放在专用 IP 地址上。不,这也行不通,因为 .htaccess 规则将所有流量重写为“www。”意味着它会中断 - 您会得到以下结果:
www.1.2.3.4 -- server DNS address could not be found.
我害怕关闭那个“www.”重写规则,因为它是几年前制定的,我不知道如果没有它会发生什么。
因此,目前我认为没有办法移动此网站并将旧网站重定向到新网站。我将 TTL 设置得很低,因此我不得不依靠全局 DNS 缓存在合理的时间内刷新(我可以忍受 24 小时)。
我头好痛。我是不是漏掉了什么,还是我应该按照计划移动网站,甚至不尝试从旧位置进行重定向?
答案1
我从以下地址复制了这个答案你的其它问题.htaccess
,因为它实际上与您的新详细信息更相关。只需在当前主机上就可以完全完成。
我的示例使用www
子域,但您可以根据需要进行调整。
在新服务器/网站上,确保它可以同时处理两个子域www.example.com
以及您选择的第二个子域上的请求,而不会吓到最终用户。我通常选择www2.example.com
。
当您准备好切换时,请将 DNS 更改为指向新 IP,然后在旧服务器上重新配置网站,以便它对所有请求执行 HTTP 重定向www2.example.com
。这应该不是要永久(301)重定向,请使用 302 或 307。
结果是,任何获得新 DNS 条目的客户端都会按原样转到新服务器。
任何具有缓存条目的客户端都会访问旧服务器,然后被重定向到www2
始终指向新 IP 的服务器,因此无法缓存,然后他们获得新服务器。
有些事情可能会使这变得复杂。对于 SSL,证书将需要包含临时主机名。如果网站使用 cookie,我不确定它们是否仍然有效(或者它们不会传输)。您必须考虑不同名称可能对事物产生的所有影响,但根据我的经验,不会有很多人访问缓存的名称,只要您的 TTL 相当低,他们就会很快离开。