我有兴趣直接从php创建子域名。例如,当用户创建新页面时,我希望该页面为newpage.mydomain.com。如果没有更改php或apache配置文件(假设我使用的是共享主机帐户),这是可能的吗。
稍后编辑:我正在谈论我的域名,并且我可以完全访问域管理区域。
答案 0 :(得分:1)
在.htaccess文件中设置一个错误文档,将每个404重定向到名为maybe redirection.php的文件。这个.php文件将处理“动态”重定向。
在您的区域文件中添加通配符DNS记录,以便[anyhere] .yourdomain.com指向您的网络服务器的IP
使用以下命令在apache配置中添加通配符serveralias: ServerAlias * .yourdomain.com
在redirection.php文件中写下以下代码。
<?php
$url = $_SERVER["REQUEST_URL"];
$newurl=str_replace(".yourdomain.com","",$url);
$newcomplete="http://yourdomain.com/".$newurl;
Header("Location: ".$newcomplete);
?>
这有点帮助吗?
答案 1 :(得分:0)
是的,你可以这样做。 您需要确保首先在域名注册DN面板中为您的域设置通配符* A记录。
设置好通配符后,您只需查看&gt;
即可 $_SERVER["SERVER_NAME"]
答案 2 :(得分:0)
单凭php无法实现。我不认为共享主机允许这样做。 无论如何,为了你必须拥有一个域(或有权编辑DNS记录),你可以添加通配符记录,以允许任何子域指向一台机器(由其IP地址标识)
编辑(来自Powerlord评论)
apache必须将每个子域重定向到同一个vhost
通常在vhost配置中使用ServerAlias *.example.com
/编辑
然后在php中你可以通过解析(分割)$_SERVER['HOST_NAME']
例如:
$host = explode ('.', $_SERVER['HOST_NAME']);
array_pop ($host);
array_pop ($host);
$subdomain = join ('.', $host);