如何隐藏用户的.htaccess重定向

时间:2016-09-20 10:09:00

标签: .htaccess redirect mod-rewrite subdirectory subdomain

我的服务器域名为www.domain.com,多个子域名为sub1.domain.com,sub2.domain.com。它们都指向服务器根目录。

我希望用户通过子域访问特定文件夹。例如:

  • sub1.domain.com/someURI => sub1.domain.com/subFolder1/someURI
  • sub2.domain.com/someURI => sub1.domain.com/subFolder2/someURI

我想隐藏这些重定向来自用户。我试过关注.htaccess文件:

RewriteEngine on
RewriteBase /

RewriteCond %{HTTP_HOST} ^sub1.domain.com$
RewriteRule ^(.*)$ http://sub1.domain.com/subFolder1/$1 [R,L]

RewriteCond %{HTTP_HOST} ^sub2.domain.com$
RewriteRule ^(.*)$ http://sub2.domain.com/subFolder2/$1 [R,L]

它只是在没有任何URI的情况下正确重定向,并且可以看到重定向。

1 个答案:

答案 0 :(得分:2)

您有两个导致外部重定向的问题:

  1. R
  2. 中使用RewriteRule标记
  3. 在目标
  4. 中使用以http://开头的绝对网址
  5. 另一个问题是你的重写规则是无条件的,这会导致无限循环。
  6. 您可以使用以下规则:

    RewriteEngine on
    RewriteBase /
    
    RewriteCond %{HTTP_HOST} =sub1.domain.com
    RewriteRule ^((?!subFolder1/).*)$ subFolder1/$1 [NC,L]
    
    RewriteCond %{HTTP_HOST} =sub2.domain.com
    RewriteRule ^((?!subFolder2/).*)$ subFolder2/$1 [NC,L]