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



我有一个域:www.abc.com

我想使用 Apache 虚拟主机来获取这个:

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

参观

/home/a/index.html

我可以在没有 .htaccess 的情况下使用 apache 正则表达式来完成此操作吗,如下所示:

<VirtualHost (www.abc.me/*?id=a*):80>
    DocumentRoot /var/www/html/laohu_v1
    ServerName www.abc.me
    ServerAlias www.abc.me/*?id=a*
</VirtualHost>

首先,只有当您对服务器没有完全访问权限时,您才需要或应该使用 .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+