将第三级和第二级域重定向到localhost上的目录

时间:2011-08-25 23:29:14

标签: regex .htaccess dns localhost

在Acrylic DNS代理的帮助下,设置我的localhost,使得任何带有顶级域“l”(example.l)的地址被重定向到localhost。但我想打开基于二级域的特定文件夹(example.l - > localhost / example) 我认为解决方案可能在htaccess文件中,该文件位于根目录(在我的情况下为C:\ wamp \ www \)。

我找到了一些子域代码,并稍微更改了一下,以便在我的情况下工作:

RewriteEngine on 
RewriteCond %{HTTP_HOST} !^www\.l
RewriteCond %{HTTP_HOST} ^([^.]+)\.l
RewriteRule ^$ /$1 [L]

它适用于二级域但不透明(example.l成为example.l / example),三级域被忽略(但我认为可以使用目标目录中的另一个htaccess文件修复)。 我是正则表达式中的总菜鸟,所以我无法让它正常工作。

有什么想法吗?

顺便说一句,如果我将域添加到vshost文件中,它可以正常工作,但是避免需要为每个域执行此操作,这有点我想要完成的事情......

1 个答案:

答案 0 :(得分:1)

您要做的是使用Named Virtual Hosts,而不是mod_rewrite

这是一个稍微复杂的问题,因为它取决于您的系统配置方式,操作系统以及您运行的Apache版本。

但是,一般情况下,它基本上需要在http.conf中启用命名虚拟主机,然后添加指向每个主机的不同目录的特定配置,如下所示:

# Enabled Named Virtual Hosts
NameVirtualHost *:80

# Set up one host
<VirtualHost *:80>
    ServerName example.l
    ServerAlias *.example.l
    DocumentRoot "C:/wamp/www/example"
</VirtualHost>

# Add another
<VirtualHost *:80>
    ServerName other.l
    DocumentRoot "C:/wamp/www/other"
</VirtualHost>

在生产系统中,例如在Linux操作系统上运行的系统,您通常会为每个域维护一个单独的.conf,以便更轻松。

编辑:我不是Windows用户,所以我不是100%使用正确的目录分隔符格式。我改变它以匹配我在网上找到的例子。