Apache2 WAMP的可用站点(apache)和httpd.conf-使XXXXX.domain.com自动直接
我目前在WAMP中的httpd.conf文件中有:Apache2 WAMP的可用站点(apache)和httpd.conf-使XXXXX.domain.com自动直接,apache2,wamp,wampserver,apache-config,httpd.conf,Apache2,Wamp,Wampserver,Apache Config,Httpd.conf,我目前在WAMP中的httpd.conf文件中有: NameVirtualHost 127.0.0.1 <VirtualHost 127.0.0.1> ServerAlias *.dev.co.uk UseCanonicalName Off VirtualDocumentRoot D:/wamp/www/%1/httpdocs </VirtualHost> NameVirtualHost 127.0.0.1 ServerAlias*.dev.c
NameVirtualHost 127.0.0.1
<VirtualHost 127.0.0.1>
ServerAlias *.dev.co.uk
UseCanonicalName Off
VirtualDocumentRoot D:/wamp/www/%1/httpdocs
</VirtualHost>
NameVirtualHost 127.0.0.1
ServerAlias*.dev.co.uk
UseCononicalName关闭
VirtualDocumentRoot D:/wamp/www/%1/httpdocs
我创建了一个目录“foo.bar”,然后尝试,我得到了以下结果:
找不到
在上找不到请求的URL/
这台服务器
我想让这个设置在本地apache服务器和wamp服务器上运行(我认为语法略有不同)。如果我需要提供更多信息,请留下评论,我会更新。我从未使用过
VirtualDocumentRoot
,但是看到你没有得到任何回复,我会尝试一下
根据,您的问题似乎在于您使用的%1
,它将只匹配的“foo”http://foo.bar.dev.co.uk
要匹配“foo.bar”,请尝试:
%1
匹配“foo”,而%2
匹配“bar”。每种格式附加的.0
允许我们在foo和bar之间包含点(因为
也用作运算符来提取匹配单词的子字符串)
如果这不起作用,请检查日志以查看Apache实际上在查找哪个目录。这可能会为我们提供一些线索,说明出了什么问题
更新
针对:
“这确实使foo.bar.dev.co.uk 然而,不幸的是,它停止了 foo.dev.co.uk停止工作,有什么想法吗?” 使用目录名插值来匹配子域数目不确定的别名是很棘手的 最直接的方法是简单地使用
%0
,并以完整域名命名目录
VirtualDocumentRoot D:/wamp/www/%0/httpdocs
这将与目录D:/wamp/www/foo.bar.dev.co.uk/httpdocs
和D:/wamp/www/foo.dev.co.uk/httpdocs
匹配
如果可能的域的子集有限,则可以制定更具体的解决方案。例如,如果您有:
- “foo.dev.co.uk”
- “bar.dev.co.uk”
- “foo.bar.dev.co.uk”
- 。。以及更多“X.Y.dev.co.uk”形式的域
<VirtualHost 127.0.0.1>
ServerAlias foo.dev.co.uk
ServerAlias bar.dev.co.uk
UseCanonicalName Off
VirtualDocumentRoot D:/wamp/www/%1/httpdocs
</VirtualHost>
<VirtualHost 127.0.0.1>
ServerAlias *.dev.co.uk
UseCanonicalName Off
VirtualDocumentRoot D:/wamp/www/%1.0.%2.0/httpdocs
</VirtualHost>
ServerAlias foo.dev.co.uk
ServerAlias bar.dev.co.uk
UseCononicalName关闭
VirtualDocumentRoot D:/wamp/www/%1/httpdocs
ServerAlias*.dev.co.uk
UseCononicalName关闭
VirtualDocumentRoot D:/wamp/www/%1.0.%2.0/httpdocs
一些可能支持以下内容的注释:
1) 解析您的本地主机ip您必须让浏览器能够找到127.0.0.1上的内容。因此,如果未完成,请首先在Windows操作系统计算机C:\Windows\System32\drivers\etc\hosts上编辑主机文件: 如果在该主机文件中使用通配符是不可能的。为此,您应安装 2) 端口:
确保您的服务器正在侦听http默认端口,例如不要忘记在httpd.conf文件中添加此指令(因为我没有看到它): 3) 控制:
在使用NameVirtualHost XXX.XXX.XXX.XXX指令时,请确保与NameVirtualHost指令完全匹配。你的帖子上似乎就是这样 4) 路径:
作为Linux用户,这可能是我这边的一句愚蠢的话,但我认为Windows操作系统要求路径使用反斜杠,而不是斜杠。但我可能完全错了,我不想误导任何人。但是由于“这个目录名插入模块中的所有指令都将字符串插入到路径名中,我将检查得到的插入字符串的结果。请看下一点 5) 占位符:
确保模块vhost别名已加载到wamp中。 我还建议您在vhost中添加一个指令,以便您可以在日志中检查所需的插入URL,找出错误,并相应地更正apache设置:
LogFormat "%h %l %u %t \"%r\" %>s %b" common
CustomLog logs/access_log common
6) 现有解决方案…存在的问题总是存在解决方案:请参阅
一旦你检查了这些要点,我想解决方案很快就会出现。这确实使foo.bar.dev.co.uk无法工作,但不幸的是,它阻止了foo.dev.co.uk的工作,有什么想法吗?最初的错误是:文件不存在:D:/wamp/www/foo新的错误是:文件不存在:D:/wamp/www/foo.devI让它通过给你50%作为回报,您帮助我找到了一个潜在的解决方案,然而,真正的解决方案是在httpd.conf中使用mod_rewrite,我想,我还没有完全完成这项工作,如果您知道一种方法,那么我非常乐意将您的答复作为最终答案。@udjamaflip除非我误解了您的要求,否则我不知道如何
mod_rewrite
有助于简化解决方案。您的标题中提到“重定向”,但问题主体谈到将主机名映射到文档根。如果你能提供更多关于你想要达到的目标的细节,我会尽力帮助你。顺便说一句,如果你把这篇文章贴在网站上,或者甚至贴在网站上,你可能会得到更多的回复。我试着让你的问题迁移,但由于你的悬赏,我没能迁移。我冒昧地回答,只是因为你在将近两周后没有得到任何回应。
127.0.0.1 foo.bar.dev.co.uk
Listen 80
LogFormat "%h %l %u %t \"%r\" %>s %b" common
CustomLog logs/access_log common