有没有办法将所有指定的子域重定向到特定的本地文件夹?像这样:
我想将子域名附加到本地文件夹,但域名是通配符(可以是任何内容),该域名将用作文件夹名称。例如:
blog.* -> /home/www/blogs/*
so it goes like this:
blog.example.com -> /home/www/blogs/example.com
blog.blabla123.com -> /home/www/blogs/blabla123.com
我正在使用 apache2,因此我可以编辑配置或创建 .htaccess?有什么想法吗?谢谢。
答案1
选项 1:暴力破解
对于您在 Apache 中设置的 VirtualHost 域,请为博客设置相应的 VirtualHost。如下所示:
<VirtualHost 1.2.3.4:80>
ServerName blog.example.com
DocumentRoot /home/www/blogs/example.com
</VirtualHost>
<VirtuaHost 1.2.3.4:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /home/www/example.com/
</VirtualHost>
选项 2:动态虚拟主机
这mod_vhost_aliasApache 模块允许动态配置的海量虚拟主机,它允许您设置一个用于多个虚拟主机的单一配置集,其中除了文件所在的目录之外,域与域之间的所有内容都是相同的。
动态虚拟主机的秘诀是VirtualDocumentRoot
指令。它看起来像这样:
UseCanonicalName Off
VirtualDocumentRoot /var/www/%0/public_html/
这可能对应于——
/var/www/www.example.com/public_html/
查看文档使用规范名称看看它为什么应该存在,目录名称插值看看是什么%0
意思,以及是否想在那里放些别的东西。
选项 3:重写规则
Mod_rewrite 允许您提供一组转换规则,告诉 Apache 将一个 URL 转换为另一个 URL,然后将请求重新路由到该 URL 可能需要的任何位置。
有了它,你几乎可以做任何事情,但有时需要一些脑力劳动才能理解你告诉服务器要做什么。我不会深入讲解如何让它工作,因为在不充分理解它们如何工作的情况下编写重写规则最终会导致疯狂。最好先学习,再行动。
至少浏览一下mod_rewrite 手册,仔细看看参考页并阅读例子并确保您了解它们的工作原理。