使用mod_rewrite从一个域重定向到另一个域

时间:2015-07-09 17:58:16

标签: mod-rewrite

我为拥有以下网址的人设置了一个网站:                         www.flowers-oakville.com。 但他们也希望www.flowersoakville.com登陆页面。

现在的问题是,从www.flowesoakville.com重定向到www.flowers-oakville.com的最佳方式是什么?我不希望用户的浏览器通过在地址栏中显示新URL来显示重定向,因此我认为Apache的Redirect命令不是解决方案。另外,Apache Redirect会额外访问浏览器并返回我想要避免的内容。所以我认为解决方案需要是一个mod_rewrite,据我所知,它可以完成服务器内的所有操作,从而避免往返,并且用户的地址栏保持不变。

但是在阅读了几个mod_rewrite教程后,似乎mod_rewrite主要用于重定向文件,而不是整个网站。有一种简单的方法可以做到这一点吗?

感谢您的帮助。

3 个答案:

答案 0 :(得分:0)

我会在域级别执行此操作,并确保您使用相对链接或环境变量作为网站中的主机名。

www.flowersoakville.com 添加为指向 www.flowers-oakville.com CNAME 记录。

这将服务于同一网站,但保留用户输入的域名,除非您已明确链接网站某处链接中的实际域名。

答案 1 :(得分:0)

如果mode_proxy  在您的服务器上启用,您可以在.htaccess文件中使用mod_rewrite(以下代码)将域重定向到另一个域,而无需更改地址栏中的URL。

尝试将此添加到www.flowersoakville.com/.htaccess文件:

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^(www\.)?flowersoakville\.com$ [NC]
RewriteRule ^ http://www.flowers-oakville.com%{REQUEST_URI} [L,NE,P]

注意:如果您的服务器上未启用代理模块,则上述示例将无效。

答案 2 :(得分:0)

我想传递我尝试使用Dwev的答案的经验。事实证明,在我的虚拟服务器中运行的DNS管理器(我使用eApps作为我的托管服务提供商)不支持基于域的重定向。"也就是说,CNAME记录的左侧必须位于该域中。因此,当试图在flowers-oakville.com记录中建立一个指向flowers-oakville.com的CNAME记录时,左侧必须是xxx.flowers-oakville.com,其中xxx可能类似于www。虽然flowersoakville.com是我的服务器正在监听的域名之一,但我无法将左侧变为flowersoakville.com。

相关问题