.htaccess将域别名重定向到特定页面

时间:2017-07-20 16:56:06

标签: .htaccess

我工作的公司正在开设三家餐厅,其中一家与其他餐厅的名称不同。除徽标和内容外,该网站是相同的。出于这个原因,我设置了域别名,一切正常。

  • domain1.com = domain2.com
  • domain1.com/example1/ = domain2.com/example1 /

但是,他们希望我重定向domain2.com,以便将人们发送到domain2.com/example1 /

而不是domain1.com主页

这是我到目前为止所做的:

RewriteCond %{HTTP_HOST} ^www\.domain2\.com$ [NC]
RewriteCond %{REQUEST_URI} !^/example1/?$
RewriteRule ^(.*)$ http://domain2.com/example1/ [R=302,L]

RewriteCond %{HTTP_HOST} ^www\.domain1\.com$ [NC]
RewriteCond %{REQUEST_URI} ^/example1/?$
RewriteRule ^(.*)$ http://domain2.com/example1/ [R=302,L]

这有点......有点。

但是!不完全......

示例:

当HTTP_HOST为' http://domain2.com'这工作

  • domain2.com至www.domain2.com/page/(WORKS)
  • domain2.com到domain2.com/page/(REDIRECT LOOP)

当HTTP_HOST为' http://www.domain2.com'

  • www.domain2.com至domain2.com/page/(WORKS)
  • www.domain2.com至www.domain2.com/page/(REDIRECT LOOP)

1 个答案:

答案 0 :(得分:1)

我终于开始工作了。

我已将我的htaccess更新为:

RewriteCond %{HTTP_HOST} ^(www\.)?domain2\.com$ [NC]
RewriteCond %{REQUEST_URI} ^/$
RewriteRule ^(.*)$ http://domain2.com/example1/ [R=302,L]

所以诀窍最终成了:

RewriteCond %{REQUEST_URI} ^/$

我读到%{REQUEST_URI}总是包含一个前导斜杠,它永远不会为空,所以通过检查它是否只包含我能够理顺我的重定向。

现在,如果HTTP_HOST是www.domain2.com

  • RewriteCond%{HTTP_HOST} ^(www。)?domain2.com $ [NC] = TRUE
  • RewriteCond%{REQUEST_URI} ^ / $ = TRUE
  • 重定向!

并且,如果HTTP_HOST是www.domain2.com/example1 /

  • RewriteCond%{HTTP_HOST} ^(www。)?domain2.com $ [NC] = TRUE
  • RewriteCond%{REQUEST_URI} ^ / $ = FALSE
  • 没有重定向!呜!