带有正则表达式的Apache虚拟主机

时间:2017-04-05 11:51:04

标签: apache virtualhost

我有一个域名:www.abc.com

我想使用Apache虚拟主机来实现这个目标:

GetClassNameCore()

访问

www.abc.com/index.html?id=m1 ,www.abc.com/index.html?id=m2

/home/m/index.html

访问

www.abc.com/index.html?id=a1 ,www.abc.com/index.html?id=a2

我可以使用apache正则表达式完成此操作而不使用.htaccess,如下所示:

/home/a/index.html

1 个答案:

答案 0 :(得分:1)

首先,当您无法完全访问服务器时,您只需要或应该使用.htaccess。 Vhost并不需要放入.htaccess。我们的Apache配置根本不使用;)

以下是您的虚拟主机的外观。但是,如果您只托管一个域,并且通过服务器上的一个端口进入,请省略<VirtualHost>指令并将重写直接放入服务器的配置中。

<VirtualHost *:80>
    DocumentRoot /var/www/html/laohu_v1
    ServerName abc.me
    ServerAlias www.abc.me

    RewriteEngine On
    RewriteCond %{QUERY_STRING} ^id=(.*)\d$ 
    RewriteRule ^(.*) /home/%1/index.html
</VirtualHost>
如果只有一个字符位于数字前面,则

RewriteCond %{QUERY_STRING} ^id=(.*)\d$将其更改为(.)。如果您需要多个数字,请将其更改为:\d+