Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 如何使用PHP创建子域?是否可以在共享主机上运行?_Apache_.htaccess_Php_Subdomain - Fatal编程技术网

Apache 如何使用PHP创建子域?是否可以在共享主机上运行?

Apache 如何使用PHP创建子域?是否可以在共享主机上运行?,apache,.htaccess,php,subdomain,Apache,.htaccess,Php,Subdomain,我对直接从php动态创建子域感兴趣。例如,当用户创建新页面时,我希望该页面为newpage.mydomain.com。在不更改php或apache配置文件的情况下(假设我使用的是共享主机帐户),这是可能的吗 稍后编辑:我说的是我的域名,我可以完全访问域名管理区域 在.htaccess文件中设置一个错误文档,将每个404重定向到一个名为maybe redirection.php的文件。php文件将处理“动态”重定向 在区域文件中添加通配符DNS记录,以便[whateverhere].yourdom

我对直接从php动态创建子域感兴趣。例如,当用户创建新页面时,我希望该页面为newpage.mydomain.com。在不更改php或apache配置文件的情况下(假设我使用的是共享主机帐户),这是可能的吗

稍后编辑:我说的是我的域名,我可以完全访问域名管理区域

  • 在.htaccess文件中设置一个错误文档,将每个404重定向到一个名为maybe redirection.php的文件。php文件将处理“动态”重定向

  • 在区域文件中添加通配符DNS记录,以便[whateverhere].yourdomain.com指向Web服务器的IP

  • 使用以下命令在apache配置中添加通配符serveralias: ServerAlias*.yourdomain.com

  • 在redirection.php文件中编写以下代码

  • 
    
    这有帮助吗

  • 在.htaccess文件中设置一个错误文档,将每个404重定向到一个名为maybe redirection.php的文件。php文件将处理“动态”重定向

  • 在区域文件中添加通配符DNS记录,以便[whateverhere].yourdomain.com指向Web服务器的IP

  • 使用以下命令在apache配置中添加通配符serveralias: ServerAlias*.yourdomain.com

  • 在redirection.php文件中编写以下代码

  • 
    
    这有帮助吗?

    是的,你可以这样做。 您需要确保首先在域注册DN面板中针对您的域设置通配符*a记录

    设置完通配符后,您只需查看>

     $_SERVER["SERVER_NAME"]
    
    是的,你能做到。 您需要确保首先在域注册DN面板中针对您的域设置通配符*a记录

    设置完通配符后,您只需查看>

     $_SERVER["SERVER_NAME"]
    

    仅仅通过php是不可能的。我认为共享主机不允许这样。 无论如何,如果您必须拥有一个域(或拥有编辑DNS记录的权限),则可以添加通配符记录,以允许任何子域指向一台计算机(由其IP地址标识)

    编辑(来自Powerlord评论)

    apache必须将每个子域重定向到同一vhost 通常使用vhost配置中的
    ServerAlias*.example.com

    /编辑

    然后在php中,您可以通过解析(拆分)
    $\u服务器['HOST\u NAME']

    例如:


    仅仅通过php是不可能的。我认为共享主机不允许这样。 无论如何,如果您必须拥有一个域(或拥有编辑DNS记录的权限),则可以添加通配符记录,以允许任何子域指向一台计算机(由其IP地址标识)

    编辑(来自Powerlord评论)

    apache必须将每个子域重定向到同一vhost 通常使用vhost配置中的
    ServerAlias*.example.com

    /编辑

    然后在php中,您可以通过解析(拆分)
    $\u服务器['HOST\u NAME']

    例如:


    这是错误的。我完全按照OP在数千页上的要求来做。@Laykes:这实际上取决于你的主机是如何配置的。默认情况下,Apache(OP询问的对象)不允许您这样做;相反,它会返回到
    \u默认值\u
    虚拟主机,如果失败,则返回主服务器配置。这是怎么回事?我解释说,你需要这样做,并表示>我不认为有一个共享托管服务允许这样做。它应该得-1分吗?也许更好的评论应该是链接到提供该服务的主机服务。这是错误的。我完全按照OP在数千页上的要求来做。@Laykes:这实际上取决于你的主机是如何配置的。默认情况下,Apache(OP询问的对象)不允许您这样做;相反,它会返回到
    \u默认值\u
    虚拟主机,如果失败,则返回主服务器配置。这是怎么回事?我解释说,你需要这样做,并表示>我不认为有一个共享托管服务允许这样做。它应该得-1分吗?也许更好的评论是链接到提供该功能的托管服务。如果您的提供商允许您为您的Web服务器设置“全面覆盖”,则这可能适用于共享托管。请与主机提供商联系。是否确实需要重定向?我可以直接分析请求url,并根据我的假设构建页面。然后你可以采用这种方法,但你仍然需要一个通配符DNS条目,apache需要知道如何响应假域名。如果你的提供商允许你为你的Web服务器设置“一网打尽”,这可能适用于共享主机。请与主机提供商联系。是否确实需要重定向?我可以直接分析请求url,并根据我的假设构建相应的页面。那么你可以采用这种方法,但你仍然需要一个通配符DNS条目,apache需要知道如何响应伪子域名称。
    $host = explode ('.', $_SERVER['HOST_NAME']);
    array_pop ($host);
    array_pop ($host);
    $subdomain = join ('.', $host);