Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.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
Php 创建特定于城市的网站(city1.example.com、city2.example.com)_Php_Javascript_Jquery_Mysql_Content Management System - Fatal编程技术网

Php 创建特定于城市的网站(city1.example.com、city2.example.com)

Php 创建特定于城市的网站(city1.example.com、city2.example.com),php,javascript,jquery,mysql,content-management-system,Php,Javascript,Jquery,Mysql,Content Management System,我如何建立一个网站的子域迎合不同的城市 像http://philly.example.com,http://maine.example.com,http://sandiego.example.com?大部分的网站都是一样的,比如布局,文字,数据库,界面。与此不同的是一些特定于城市的图形,如在徽标中添加城市名称(如纽约Groupon、芝加哥Groupon),以搜索数据库的形式更改隐藏变量(城市),从而使结果偏向城市 问题1。用户访问网站。脚本根据用户的IP地址确定城市,然后重定向到正确的子域 我可

我如何建立一个网站的子域迎合不同的城市

http://philly.example.com
http://maine.example.com
http://sandiego.example.com
?大部分的网站都是一样的,比如布局,文字,数据库,界面。与此不同的是一些特定于城市的图形,如在徽标中添加城市名称(如纽约Groupon、芝加哥Groupon),以搜索数据库的形式更改隐藏变量(城市),从而使结果偏向城市

问题1。用户访问网站。脚本根据用户的IP地址确定城市,然后重定向到正确的子域

我可以做检测脚本,但是你如何向不同的城市显示几乎相同的站点呢?我猜你不会复制50个不同城市的网站50次,处理每个网站的变化将是疯狂的

问题2:假设您不会每次为一个新城市复制站点,并稍微更改图像和文本,那么如何进行城市特定的更改

对于页面上的每个城市特定项目,您是否有50个
案例ifs
if elseif else
的列表?我预计这样做会弄乱整个页面的代码

Q1)你在数据库中有城市,然后你想显示什么,就按cityid做


问题2)同样,通过cityid显示数据。

使用通配符DNS/web设置相当简单

  • 将域的DNS设置为将
    *.example.com
    映射到服务器的IP地址
  • 将Apache设置为执行通配符vhost:
    ServerAlias*.example.com example.com
  • 在PHP脚本中,您可以参考
    $\u SERVER['HTTP\u HOST']
    来确定用户正在访问哪个子站点,并从中定制您的内容

  • 这实际上取决于每个城市的信息差异有多大。看来你真的有三个选择

  • 单独的数据库(结构完全相同,但数据不同)
  • 一个数据库,表名为CityBasedContent(带有CityId和content以及contentkey,例如
    SANDIEGO->logo->“img/SANDIEGO.gif”
  • 你只改变了很少的图像,可能是一些颜色的css,也就是说,它们之间没有太多的变化。我会按照@Marc B的建议做,或者根据他们的cityId将css/img放在文件夹中。因为这会使切换更容易
  • 当人们加载页面时,你会检查他们在哪里——你可能想做“你确定”之类的对话,询问他们是否在你检测到的城市


    如果使用选项1,您所要做的就是将当前使用的数据库更改为特定于城市的数据库。对于选项2,您只需设置全局cityId,因此所有查询都是针对该特定城市进行的。

    为此,您可以创建两个表

    表1:

    id INT Primary key
    city_name VARCHAR 255
    
    表2:

    id INT Primary key
    city_id INT Foreign key
    page_id INT
    page_content TEXT 
    
  • 您可以确定用户来自哪个城市,并从表1中获取城市ID
  • 使用表1中的外键在表2中选择与该城市相关的内容
  • 要处理图像,您可以根据严格的命名约定(例如img-brisbane-header.jpg、img-cairns header.jpg)获取图像,为每个城市制作不同的图像

  • 有很多不同的方法。这取决于每个城市是有不同的内容,还是只有少数几个。否则,它将更具技术性,因为您需要确定哪些内容将适用于哪个城市。这需要对您的sql表进行调整。

    Luke:不同的站点之间几乎没有差异,只是不同的数据库以及一些img和单词的差异。欢迎光临@thethethethethethethethethethethethethethethethethethethethethey如果你有不同的“内容”,你有主机,你可以有许多不同的数据库,我会选择不同的数据库。因为它很好地分开,所以更干净。我也有类似的问题,我让人们根据自己的选择来搜索东西。基于这个选择,我正在更改数据库(在推进orm中),然后它使用不同的带有标签的表(即,city_名称将被其他名称替换。我还为img和css管理了不同的文件夹,如/img/$selectionId/general.css。如果css文件不存在,那么它将使用仅为默认值的通用文件。为什么这不是一个真正的问题?我不知道如何解决这个问题。。。