我最近设置了一个家庭网络/媒体服务器,但一些设置有些困难。它运行良好,可以正常提供网页等服务,但现在我重新组织了主文档根目录的结构,现在很难控制它。
目前的架构是:
-drive
--sites
---live
----siteA
----siteB
----siteC
---dev
--media
---films
---series
我想要做的是在调用 siteA/siteC 时为 siteC 提供服务。
例如,mydomain.com 将显示 siteA 中的文件,这没问题。SiteB 和 SiteC 没有自己的域等,我不希望它们成为 SiteA 的子文件夹,所以我希望 mydomain.com/siteB 提供 siteB 中的内容,siteC 也是如此。
然后,我想对媒体服务器使用相同的前提,以便 myDomain.com/media 将显示媒体目录内的文件的目录列表。
apache 中的文档根目录是 d:/sites/live,然后我使用虚拟主机来确定会发生什么。对于标准的 mydomanA.com 或 myDomainB.com 来说,这没问题,但对于尝试实现我上面提到的内容来说,就不行了。
这是其中一次尝试:
<VirtualHost *:80>
DocumentRoot "D:/Sites/Live/siteA"
ServerName www.mydomain.com/siteA
<Directory "D:/Sites/Live/siteA">
Order allow,deny
Allow from all
AllowOverride All
</Directory>
另一次使用别名的尝试失败了:
<VirtualHost *:80>
DocumentRoot "D:/Sites/Live/siteA"
ServerName www.mydomain/siteA
<Directory "D:/Sites/Live/siteA">
Order allow,deny
Allow from all
AllowOverride All
</Directory>
Alias /siteA D:/sites/live/siteA
<directory "D:/sites/live/siteA">
Order allow,deny
AllowOverride All
</directory>
</VirtualHost>
谢谢您的帮助,过去几个小时我一直在绞尽脑汁寻找解决办法。
已编辑以回答评论。
The expected input and output would be along the following:
mydomain.com = d:/sites/live/siteA
mydomain.com/siteB = d:/sites/live/siteB
mydomain.com/siteC = d:/sites/live/siteC
and the media server would be:
mydomain.com/media = d:/media
答案1
以下内容已在 Scientific Linux 上测试过:
<VirtualHost *:80>
DocumentRoot "/var/www/html/siteA"
Alias /siteB/ "/var/www/html/siteB/"
<Directory "/var/www/html/siteB/">
Order allow,deny
Allow from all
AllowOverride All
</Directory>
Alias /siteC/ "/var/www/html/siteC/"
<Directory "/var/www/html/siteC/">
Order allow,deny
Allow from all
AllowOverride All
</Directory>
Alias /media/ "/media/"
<Directory "/media/">
Options +Indexes
Order allow,deny
Allow from all
AllowOverride All
</Directory>
</VirtualHost>
测试结果如下:
Input
Output
mydomain.com
content of siteA
mydomain.com/siteA/
404
mydomain.com/siteB/
content of siteB
mydomain.com/siteC/
content of siteC
mydomain.com/media/
content of media
笔记:访问/media
目录导致错误被Directory index forbidden by Options directive:
记录在 error.log 中。添加Options +Indexes
解决了该问题。找到了此解决方案这里。