【发布时间】:2011-01-22 08:46:35
【问题描述】:
我有兴趣直接从 php 动态创建子域。例如,当用户创建一个新页面时,我希望该页面为 newpage.mydomain.com。是否可以在不更改 php 或 apache 配置文件的情况下实现(假设我使用的是共享主机帐户)。
稍后编辑:我说的是我的域,我可以完全访问域管理区域。
【问题讨论】:
标签: apache .htaccess php subdomain
我有兴趣直接从 php 动态创建子域。例如,当用户创建一个新页面时,我希望该页面为 newpage.mydomain.com。是否可以在不更改 php 或 apache 配置文件的情况下实现(假设我使用的是共享主机帐户)。
稍后编辑:我说的是我的域,我可以完全访问域管理区域。
【问题讨论】:
标签: apache .htaccess php subdomain
仅通过 php 是不可能的。而且我认为共享主机不允许这样做。 无论如何,为此您必须拥有一个域(或有权编辑 DNS 记录),然后您可以添加通配符记录以允许任何子域指向单个机器(由其 IP 地址标识)
编辑(来自 Powerlord 评论)
apache 必须将每个子域重定向到同一个虚拟主机
通常在虚拟主机配置中使用ServerAlias *.example.com
/编辑
然后在php中你可以通过解析(拆分)$_SERVER['HOST_NAME']来检查页面是从哪个子域请求的
例如:
$host = explode ('.', $_SERVER['HOST_NAME']);
array_pop ($host);
array_pop ($host);
$subdomain = join ('.', $host);
【讨论】:
_default_ 虚拟主机,如果失败了,则主服务器配置。
是的,您可以这样做。 您需要确保首先在您的域注册 DN 面板中针对您的域设置通配符 * 一条记录。
设置通配符后,您只需查看 >
$_SERVER["SERVER_NAME"]
【讨论】:
在您的 .htaccess 文件中设置一个错误文档,将每个 404 重定向到一个名为 redirection.php 的文件。这个 .php 文件将处理“动态”重定向。
在您的区域文件中添加通配符 DNS 记录,以便 [whateverhere].yourdomain.com 指向您的网络服务器的 IP
在 apache 配置中添加通配符服务器别名,方法是: 服务器别名 *.yourdomain.com
在你的redirection.php文件中写下以下代码。
.
<?php
$url = $_SERVER["REQUEST_URL"];
$newurl=str_replace(".yourdomain.com","",$url);
$newcomplete="http://yourdomain.com/".$newurl;
Header("Location: ".$newcomplete);
?>
这有点帮助吗?
【讨论】: