apache - 在通配符 vhost apache (xampp) 设置中重定向子子域
问题描述
我在 Windows 10 上使用 XAMPP 和 Acrylic DNS 代理,我需要每天或每周创建多个应用程序,这些应用程序有时需要从不同的域提供服务,在这种情况下我想使用子域。
我正在尝试从域中的 apache 文件夹中提供多个应用程序(app1.jml => c:/apps/app1),到目前为止我已经完成了这项工作。
但我想将子域重定向到同一个域(sub1.app1.jml => c:/apps/app1),然后让我的应用程序(php/mysql)处理请求。
基本上:
app1.jml -> c:/apps/app1 (1)
sub1.app1.jml -> c:/apps/app1 (2)
sub2.app1.jml -> c:/apps/app1 (2)
app2.jml -> c:/apps/app2 (1)
sub1.app2.jml -> c:/apps/app2 (2)
sub2.app2.jml -> c:/apps/app2 (2)
我得到(1)使用以下虚拟主机配置:
<VirtualHost *:80>
ServerAlias *.jml
VirtualDocumentRoot c:/apps/%1/
<Directory "c:/sites/">
Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
但我无法得到(2)。我尝试了以下代码:
<VirtualHost *:80>
ServerAlias *.jml
VirtualDocumentRoot c:/sites/%1/
<Directory "c:/sites/">
Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerAlias *.*.jml
VirtualDocumentRoot c:/sites/%1/
<Directory "c:/sites/">
Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
它没有用,它给了我这个:
app1.jml -> c:/apps/app1
sub1.app1.jml -> c:/apps/sub1
app1.app1.jml -> c:/apps/app1
因为ServerAlias *.*.jml
我尝试了所有 (%2, %0, %-1, %-2)VirtualDocumentRoot
无济于事。
我错过了什么吗?谢谢您的帮助 :-)
解决方案
我还在 Apache Friends 支持论坛上发布了这个答案,并得到了我的两个规则冲突的回复,所以我修复了我的配置的第一部分并删除了第二部分:
<VirtualHost *:80>
ServerAlias *.jml
VirtualDocumentRoot c:/sites/%-2/
<Directory "c:/sites/">
Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
推荐阅读
- fortran - 如何将位模式 Z'FEDCBA09' 分配给 32 位整数
- macos - macOS 上的 USB 外设仲裁
- python - 从请求库中获取方法似乎返回主页而不是特定 URL
- python-3.x - 设置标题栏的字体
- scheme - DrRacket 中的计划合同违规
- java - 如何添加编译标志VSCode
- powershell - 通过 UNIX Python 设置 ADUser
- omnet++ - OMNET++ 的 Openflow 扩展
- go - 使用 Go 向 APNS 发出推送请求时出现 403 禁止错误。我是否正确创建了 JWT?
- mysql - 需要从 MySQL JOIN 查询中返回单个但得到多个