我需要一条规则来内部重写几个域,包括和不包含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
答案 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>