Php 区域子域

Php 区域子域,php,mysql,.htaccess,subdomain,Php,Mysql,.htaccess,Subdomain,我想为我当前的site.com创建一些区域子域,比如city1.site.com和city2.site.com,但我不想将所有文件从原始域复制到子域。 是否可以在subdomaincity1.site.com上显示与site.com相同的信息,但只需设置一个变量,比如$city=123?通过city1.site.com上的这个变量,我可以显示这个城市的更多具体联系人和产品 我是新来的子域,所以请帮助,我的网站是在PHP和MySQL。谢谢大家! 您可能可以使用php中的$\u服务器超全局变量(阅读

我想为我当前的
site.com
创建一些区域子域,比如
city1.site.com
city2.site.com
,但我不想将所有文件从原始域复制到子域。
是否可以在subdomain
city1.site.com
上显示与
site.com
相同的信息,但只需设置一个变量,比如
$city=123
?通过
city1.site.com
上的这个变量,我可以显示这个城市的更多具体联系人和产品


我是新来的子域,所以请帮助,我的网站是在PHP和MySQL。谢谢大家!

您可能可以使用php中的
$\u服务器
超全局变量(阅读文档:尤其是
$\u服务器['HTTP\u HOST']
)来找出当前子域(如果有的话)

其余的可能很简单,例如,一个switch语句取决于当前子域,如

switch($_SERVER['HTTP_HOST']) {
  case 'city1.site.com': $abc=1; break;
  case 'city2.site.com': $abc=2; break;
  default: $abc=0; break;
}
更新:想法是,对所有子域使用相同的代码(您不希望维护任意数量的副本),并通过代码强制执行不同的行为。也许你甚至可以设置一个“catchall”域

因此,如果您将域
site.com
设置为驻留在服务器的
htdocs/site.com
目录中,则所有其他域也使用相同的目录

要为站点实现不同的输出,请检查
$abc
变量或其他变量(甚至可能是
$\u服务器['HTTP\u主机]]
)以执行此操作


提取子域后,可以使用该值运行sql查询或类似操作(如果数据库设置正确)。

如果区域较少,可以手动为每个区域创建子域,并将域指向与主站点相同的文件夹。然后在脚本中抓取主机并将其与区域匹配,并将所需的值分配给变量

<?php
if($_SERVER['HTTP_HOST'] === 'city1.site.com') {
  $city = 123;
} else if($_SERVER['HTTP_HOST'] === 'city2.site.com') {
  $city = 223;
}

第一步是确保您的DNS记录已准备就绪。如果以下内容尚不存在,请为其添加A记录

编辑-如果您使用的是共享主机,这可能无法正常工作结束

将name部分设置为“*”,然后将next to值设置为当前使用的服务器IP地址。一旦这个规则到位,人们就可以访问{anything}.site.com,并将所有人发送到同一台服务器

在这一点上,我会做一些类似于Jakumi的回答的事情,但要让它更简单

/* Cut up the URL */
$hostDetails = explode('.', $_SERVER['HTTP_HOST']);
/* Get the first part (city) of the URL */
$city = current($hostDetails);
/* Default check */
if($city == 'site') { $city = 'YOUR_DEFAULT'; }

谢谢如何在city1.site.com上获取site.com的所有内容?使用.htaccess?该代码假定您拥有完全相同的文件。(意思是,甚至不是副本,而是所有域的同一个文档根)耶!但是,在htaccess或服务器配置文件中,我需要什么规则才能在我的子域上显示site.com上的文件?你是说你不知道如何设置多个域?要设置子域,请查看上面我编辑的答案。您需要了解如何使所有子域工作。你不需要,我喜欢这样!但是,如果他们键入“不存在的城市”或类似nothing.site.com的内容,该怎么办?如何过滤这样的子域以防止谷歌扫描它?对于你的第一个问题,你必须检查一些东西(DB记录?),如果不正确,则默认或使用Jakumi的答案。对于第二部分,我认为你不必担心谷歌扫描不存在的子域,除非它们被“击中”。如果是这样的话,你可以使用网站管理员工具定义子域,这样你就可以删除它们谢谢你的教程,但是像nothing.site.com这样不需要的子域呢?如何防止他们显示,尤其是不被谷歌扫描?如果你有一个城市不存在,抛出404错误告诉谷歌页面不存在。你需要创建sitemap.xml文件来告诉谷歌索引什么。好的,我想404可以做到!谢谢我用一个例子更新了代码,告诉你应该抛出什么错误!如果我想有通配符子域和一个fo测试,比如test.site.com有自己的目录,该怎么办?
<?php
 $subdomain = strstr($_SERVER["HTTP_HOST"], '.', true);
 $city = getRegion($subdomain);
 if(!$city) {
 // throw 404 error
  header('HTTP/1.0 404 Not Found');
  exit;
}
// getRegion($subdomain) is a method that should search your database to match the subdomain to a region
/* Cut up the URL */
$hostDetails = explode('.', $_SERVER['HTTP_HOST']);
/* Get the first part (city) of the URL */
$city = current($hostDetails);
/* Default check */
if($city == 'site') { $city = 'YOUR_DEFAULT'; }