.htaccess将2个不同的域名重定向到单独的“登陆页面”

时间:2013-12-30 22:48:43

标签: .htaccess mod-rewrite

根据要求,我已经重新阐述了我的问题,以便明确,以便其他人可以从答案中获益更多。

我为我工作的公司提供了3个域名:

bizwizprint.com (托管在共享服务器上的主要网站)

bizwizsigns.com (未附加托管的辅助域名)

boatwiz.com (没有托管主机的三级域名)

目标是让我的第二个和第三个域重定向到他们各自的着陆页上的第一个域。

第一步:在域名注册商处,更改第二个和第三个域的DNS“A记录”,以解析为托管主网站的相同IP地址。

第二步:在主网站服务器上为第二个和第三个域创建“站点别名”,它们将指向主网站文件所在的根目录。

第三步:创建或编辑.htaccess文件,该文件将重定向第二个和第三个域的请求,并将它们指向我为其创建的着陆页。

问题:我要向htaccess添加哪些规则?

基本上,我想在地址栏中输入“boatwiz.com”中的用户类型,浏览器将逐字地转到“bizwizprint.com/boatwiz.html”。

请注意:我不希望任何重写规则将实际URL更改为boatwiz。

原因在于它是暂时的。最终将有一个真正的“boatwiz”网站和“bizwizsigns”网站,他们很可能在结构上有很大不同。我不希望看起来我有三个具有相同内容的域名,或者让人们制作任何我将需要再次重定向的书签。

2 个答案:

答案 0 :(得分:4)

“如何重定向外部域名(boatwiz.com)以登陆新域名的特定页面(bizwizprint.com/boatwiz.html)而不进行任何重写?”

所以你可能意味着你想要一个“内部重定向”,而不是“外部重定向”,对吗?即你想要,例如bizwizsigns.com保持显示在浏览器位置栏中,但显示内容 bizwizprint.com/signs,对吧?

1。仅限htaccess - 不可能

好吧,仅使用.htaccess,这是不可能的,因为不同的域将强制外部重定向。引用the docs

  

绝对网址       

如果指定了绝对URL,则mod_rewrite 会检查主机名是否与当前主机匹配。如果是,该计划和   主机名被剥离,生成的路径被视为a   URL路径。 否则,将对给定的内容执行外部重定向   网址。要强制外部重定向回到当前主机,请参阅   [R]旗下面。

2。 iframe技巧

你可以做的是使用iframe。将此代码放在bizwizsigns.com/index.html

<iframe src="http://bizwizprint.com/signs" width="100%" height="100%" 
        style="border: 0 none;" frameborder="0">

但这个解决方案有许多缺点:

  • 即使用户在iframe中点击
  • ,网址也不会在浏览器的位置栏中发生变化
  • 浏览器书签和历史记录无法按预期工作。

3。聪明的主机设置(域别名到同一个目录)

您是在托管环境中,还是拥有自己的服务器?有时,托管允许您创建由同一本地目录树处理的多个域的别名。在这种情况下,你赢了 - 你可以写.htaccess,以便它作为内部重定向处理请求:

RewriteCond %{HTTP_HOST} bizwizsigns\.com$ [NC]
RewriteRule ^$ /signs [L]

RewriteCond %{HTTP_HOST} boatwiz\.com$ [NC]
RewriteRule ^$ /boats [L]

将(内部)将bizwizsigns.com重定向到/ sign(=您的bizwizprint.com/signs的内容,因为您有一个托管服务器目录用于所有3个域)。但是如果你是希望将bizwizsigns.com/<foo>之类的所有查询重定向到bizwizprint.com/signs/<foo>,您必须更加小心 - 查看REQUEST_URI上添加的条件以防止无限循环:

RewriteCond %{HTTP_HOST} bizwizsigns\.com$ [NC]
RewriteCond %{REQUEST_URI}  !^/signs/ [NC]
RewriteRule ^.*$ /signs/$1 [L]

答案 1 :(得分:3)

假设您有所有3个域指向同一个文档根目录,您只需要在其htaccess文件中使用它:

RewriteCond %{HTTP_HOST} bizwizsigns\.com$ [NC]
RewriteRule ^$ http://bizwizprint.com/signs [L,R=301]

RewriteCond %{HTTP_HOST} boatwiz\.com$ [NC]
RewriteRule ^$ http://bizwizprint.com/boats [L,R=301]

RewriteCond %{HTTP_HOST} (bizwizsigns|boatwiz)\.com$ [NC]
RewriteRule ^(.+)$ http://bizwizprint.com/$1 [L,R=301]

因此,如果它只是http://bizwizsigns.com/http://boatwiz.com/,那么您会被重定向到http://bizwizprint.com/signshttp://bizwizprint.com/boats。但如果你在/之后有任何内容,例如http://bizwizsigns.com/foo/bar.html,那么你将被重定向到http://bizwizprint.com/foo/bar.html