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
带有.htaccess和php的通配符子域_Php_.htaccess_Wildcard Subdomain - Fatal编程技术网

带有.htaccess和php的通配符子域

带有.htaccess和php的通配符子域,php,.htaccess,wildcard-subdomain,Php,.htaccess,Wildcard Subdomain,我花了一天的大部分时间来想办法解决这个问题,最后需要寻求一些帮助 我有一堆文件夹,我想把它们做成子域。我遵循了下面的教程,在步骤1中在我的DNS中设置了一个通配符重定向,并在步骤2中编辑了我的virualhost。这似乎已经按计划进行了 然而,我不确定步骤3背后的逻辑。下面的代码如何允许我显示子域中文件夹中的内容?我不知道我应该尝试什么样的逻辑并编写代码——我想我显然遗漏了一些显而易见的东西 $serverhost = explode('.',$_SERVER["HTTP_HOST"]); $s

我花了一天的大部分时间来想办法解决这个问题,最后需要寻求一些帮助

我有一堆文件夹,我想把它们做成子域。我遵循了下面的教程,在步骤1中在我的DNS中设置了一个通配符重定向,并在步骤2中编辑了我的virualhost。这似乎已经按计划进行了

然而,我不确定步骤3背后的逻辑。下面的代码如何允许我显示子域中文件夹中的内容?我不知道我应该尝试什么样的逻辑并编写代码——我想我显然遗漏了一些显而易见的东西

$serverhost = explode('.',$_SERVER["HTTP_HOST"]);
$sub = $serverhost[0];
if ($sub = "www") {
$sub = "";
}
(教程中的文本)

好的,下面是正在发生的事情。在主php中插入此代码 文件,它所做的是检查 域(即:thishhere.yourdomain.com)是www。如果是,则为空 $sub,否则,$sub将包含您的子域关键字。现在,你 可以检查($sub>“”),并在以下情况下对代码采取适当的操作 存在子域,以基于该值显示页面

(教程链接)


提前感谢。

嗯,事实上,这段代码只允许您获取子域的名称

因此,如果要显示与子域对应的文件夹的内容,必须扫描目录,然后检查子域调用的文件夹是否存在,然后包含此文件夹中的脚本

一个简单的方法是:

$scan = scandir('.'); // scan the current directory

if( in_array($sub, $scan) && is_dir($sub) ){

    require( $sub.'/yourscript.php');
}

但这意味着您的整个应用程序都是按照$sub值、每个include、每个文件前缀等功能设计的…

我个人会告诉您忽略该教程,如果您试图将已知数量的文件夹转换为子域,则应将它们配置为单独的虚拟主机。如果您想将子域转换为脚本中使用的变量(例如,站点上每个用户配置文件有一个子域),则该教程适用于此情况。@AeroX一旦我弄明白,文件夹将不会是已知数字。在该教程中,您甚至不需要单独的文件夹,变量
$sub
将包含用户作为子域提供的任何内容,您可以在脚本中使用该变量来根据它生成任何内容。