在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文件中,它可以正常工作,但是避免需要为每个域执行此操作,这有点我想要完成的事情......
答案 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%使用正确的目录分隔符格式。我改变它以匹配我在网上找到的例子。