我在同一个Apache服务器上从旧域重定向到新域有什么问题?

时间:2018-03-22 10:01:41

标签: apache

我们正在为作为服务器上唯一域运行的应用获取新域名。

因此,对于这个问题,我们假设我们正在将 olddomain.co.uk 移至 newdomain.com 。这两个域都会在最初的几个月里保持不变,虽然我没有自己设置它,但我很确定它们都被记录为针对同一IP地址的2个独立记录。几个星期后,我想将所有对新域名的请求重新写入旧域名,然后我会将其交换几个月。

所以我可以这样做(在httpd.conf的底部)

<If "%{HTTP_HOST} == 'newdomain.com'">
    RewriteEngine On

    RewriteRule ^.*$ https://www.google.co.uk [L]
</If>

这完全有效,除非它不是要求。 olddomain.co.uk转到应用程序,newdomain.com被重定向到谷歌。

所以我的下一步是放入我想要使用的规则

<If "%{HTTP_HOST} == 'newdomain.com'">
    RewriteEngine On

    RewriteRule "^/?(.*)"  "http://oldmain.co.uk%{REQUEST_URI}" 
</If>

这会返回一个通用错误(道歉我忘记记录了什么错误,需要等待一段时间才能重现它 - 它是一个实时服务器 - 如果需要,我稍后会添加编辑)。

我有一个UAT环境,但遗憾的是它没有注册域名,而是使用IP地址访问。我已经设置了组织级别的dns映射,并对此进行了一些测试。直到它在现场失败,我以为我有这个怀疑。

所以在UAT我有类似的东西

<If "%{HTTP_HOST} == 'uatserver'">
    RewriteEngine On

    RewriteRule "^/?(.*)"  "http://[ipaddress]%{REQUEST_URI}" 
</If>

这很有用。

如果我改变实时服务器以重定向到uat服务器,这可以工作......

<If "%{HTTP_HOST} == 'newdomain.com'">
    RewriteEngine On

    RewriteRule "^/?(.*)"  "http://[uat-ip-address]%{REQUEST_URI}" 
</If>

所以语法似乎没有问题。

似乎在实时服务器上的问题是它重定向到同一个框(?)

我在UAT和UAT之间看到的唯一真正的区别实时服务器位于httpd-vhosts.conf文件中。这是现场直播

NameVirtualHost olddomain.co.uk 
NameVirtualHost newdomain.com
NameVirtualHost [ip address]

<VirtualHost [ip address] olddomain.co.uk newdomain.com localhost:80>

    serveralias [ip address]
    serveralias olddomain.co.uk
    serveralias newdomain.com
    serveralias localhost

    DocumentRoot "${SRVROOT}/htdocs"

    <Directory "${SRVROOT}/htdocs"> 
        Options +FollowSymLinks
        AllowOverride none 
    </Directory> 

    #JkOptions     +ForwardURICompatUnparsed
    ProxyRequests off
    JkMount /* ajp13
</VirtualHost>

任何人都可以提供任何指示吗?我已经浏览了几个类似的问题,但没有找到任何结论,下次我有机会把服务器关闭,我希望有一些明确的尝试而不是黑客攻击!?

1 个答案:

答案 0 :(得分:1)

如果你想要 olddomain.com - &gt; newdomain.com
将这些设置保留在apache.conf

NameVirtualHost *:80

<VirtualHost *:80>
ServerName olddomain.com
ServerAlias newdomain.com

RewriteEngine on
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^(.*) http://www.newdomain.com%{REQUEST_URI} [R=302,NC]

如果您想要 newdomain.com - &gt; olddomain.com
将这些设置保留在apache.conf

NameVirtualHost *:80

<VirtualHost *:80>
ServerName newdomain.com
ServerAlias olddomain.com

RewriteEngine on
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^(.*) http://www.olddomain.com%{REQUEST_URI} [R=302,NC]

同样在您的DNS设置中,A Record足以支持您的新域名。您所要做的就是将它指向您的服务器。

确保在执行这些更改之前备份当前配置。既然你还活着,我就无法为你测试,但它应该有用。