VirtualHost mod_rewrite多个域相同的DocumentRoot

时间:2014-12-04 15:19:02

标签: apache mod-rewrite

我有一个VirtualHost,定义了许多ServerAlias域。在VirtualHost中使用mod重写,我希望发生以下情况:

sub.abc.com更改为sub.abc.com/?client_id=ABC

sub.def.com更改为sub.def.com/?client_id=DEF

sub2.abc.com更改为sub2.abc.com/?client_id=GHI

[......等等......]

我目前的配置是:

<VirtualHost 1.2.3.4:8080>
  ServerName sub.abc.com
  ServerAlias sub.def.com sub2.abc.com

  DocumentRoot /var/www/prod/

  [... some other things ...]

  <IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteCond %{HTTP_HOST} ^sub\.abc\.com
    RewriteRule ^/([0-9]+)/?$ login.php?client_id=ABC [NC,L]
    RewriteCond %{HTTP_HOST} ^sub\.def\.com
    RewriteRule ^/([0-9]+)/?$ login.php?client_id=DEF [NC,L]
    RewriteCond %{HTTP_HOST} ^sub2\.abc\.com
    RewriteRule ^/([0-9]+)/?$ login.php?client_id=GHI [NC,L]
  </IfModule>   

</VirtualHost>

但这实际上并没有重写。我很确定我的Cond或Rule搞砸了(哈哈......我猜这很明显)。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

建议:

让我们说你的域名sub.abc.com指向X ip地址。考虑在相同的IP地址X下创建两个额外的记录sub.def.com和sub2.abc.com。

这种做法称为Shared Web Hosting

这样,您可以为三个不同的域维护单独的配置文件。

因此,如果客户端访问sub2.abc.com - sub2.abc.com的配置文件将会出现,请求将相应地提供。

我希望这有帮助!祝你好运!