如何在 Apache 中为随机子域编写规则?

如何在 Apache 中为随机子域编写规则?

实际上,我们的网站是使用 Java 技术创建的,因此在 VPS 上安装了 Tomcat 和 apache 并进行了部署。我们正在为注册客户创建子域,我们通过创建带有 *.mydomain 名称的 A 记录启用了通配符。

之后我们必须处理 Apache 中的子域名...一旦 Apache 设置完毕,我们必须验证它是否适用于随机子域名,必须编写重写规则以将子域名映射到另一个 URL(无论我们使用什么语言)。

因此,UserName8328.domain.com 实际上会向您的服务器请求类似 domain.com/users/UserName8328 的内容。

那么你能建议我怎么做吗?对于这个问题,还有另一个链接

这个问题的讨论与 JAVA 有关。与此同时,我们遇到了与 Apache 相关的问题。您能帮忙吗? https://stackoverflow.com/questions/19188877/what-is-best-way-to-create-sub-domains-dynamically-by-using-java-whenever-user-r

答案1

对于 Apache 方面,我的网站使用:

httpd配置文件

<VirtualHost 8.8.8.8:80>
    ServerName domain.com
    DocumentRoot /var/www/siteroot/
    ServerAlias *.domain.com www.domain.com
    VirtualDocumentRoot /var/www/siteroot/users/%1
</VirtualHost>

这样做的目的是让任何子域都加载与 htttp://domain.com/users/subdomain 相同的页面。如果您使用的是 www.subdomain.com,则可能必须使用上面的%2内容%1

对于 .htaccess 方面,我会看一下(这个 ServerFault 问题。)[.htaccess 通配符子域名重写故障排除

我不是 Java 粉,但想法是类似的。在 PHP 中,我会找出他们实际访问的地址(就像您最初的 StackExchange 问题一样),然后使用它来加载用户的信息,从而加载页面。因此,我创建的网站的所有子域名将是这样的:

  1. 用户请求htttp://userid.domain.com。
  2. 服务器看到 *.domain.com 转到 domain.com/users/?q=subdomain。用户看不到这一点 - 他们仍然认为自己位于 userid.domain.com。
  3. htttp://domain.com/users/index.php 检查“q”查询字段 - 如果找到,它会为该用户加载内容。

尽管脚本以 htttp://domain.com/users/index.php 的形式执行,但用户始终会看到 htttp:// userid.domain.com。本质上,脚本将子域视为查询字符串变量。或者,您可以将所有用户推送到 htttp://domain.com/users/index.php,并使用环境变量查找子域。

一旦您验证能够看到 htttp://kdfsdkfsdklfsd.domain.com 的 htttp://domain.com/users/index.html,我就会发布一个新的 StackExchange 问题,或者重写您当前的问题。

相关内容