Apache httpd.conf - 将多个域链接到相应的子文件夹

时间:2015-04-26 04:03:03

标签: apache mod-rewrite

我需要一条规则来内部重写几个域,包括和不包含www:

www.a.com --> /m/n/o/
b.c.org --> /x/y/z/

设置是在Windows上本地运行的Apache(XAMPP)。我已经设置了hosts文件,所以所有域都指向localhost。我希望每个页面都被重定向,即我想将每个域指向它自己的不同根目录,并让它从那里正常工作。 e.g。

/                          <-- Top level folder, everything is under here.
   /root/of/domain/A/      <-- www.a.com
   /root/of/domain/C/      <-- b.c.org

1 个答案:

答案 0 :(得分:1)

你有两个选择。

(1)您提出的问题( mod_rewrite

<IfModule mod_rewrite.c>
  RewriteEngine On

  RewriteCond %{HTTP_HOST} ^(?:www\.)?a\.com$ [NC]
  RewriteRule ^/(.*)$ /root/of/domain/A/$1 [L]

  RewriteCond %{HTTP_HOST} ^b\.c\.org$ [NC]
  RewriteRule ^/(.*)$ /root/of/domain/C/$1 [L]
</IfModule>

注意:不要忘记用实际值替换示例值。此外,请确保启用 mod_rewrite

(2)最干净的方法:直接配置虚拟主机(不带 mod_rewrite

NameVirtualHost *:80

<VirtualHost *:80>
  DocumentRoot "X:/path/to/root/of/domain/A/"
  ServerName a.com
  ServerAlias www.a.com
</VirtualHost>

<VirtualHost *:80>
  DocumentRoot "X:/path/to/root/of/domain/C/"
  ServerName b.c.org
</VirtualHost>