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

时间:2011-07-05 22:12:47

标签: php javascript jquery mysql content-management-system

如何建立一个适合不同城市的子网站?

http://philly.example.comhttp://maine.example.comhttp://sandiego.example.com一样?大多数网站都是相同的,如布局,措辞,数据库,界面。不同之处将是一些特定于城市的图形,例如在徽标中添加城市名称(例如,Groupon Nyc,Groupon Chicago),以搜索数据库的形式更改隐藏变量(城市),因此结果将偏向于城市。

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

我可以执行检测脚本,但是如何向不同的城市显示几乎相同的网站?我想你不会为50个不同的城市复制50次网站,处理每个网站的变化都会疯狂!

问题2:假设您每次都没有为新城市复制网站并稍微更改图片和文字,那么您如何进行特定城市的更改呢?

对于页面上的每个特定于城市的项目,您是否有50个case-ifsif-elseif-else的列表?我预见到这样做会弄乱整个页面的代码!

4 个答案:

答案 0 :(得分:2)

使用通配符DNS /网络设置相当简单。

  1. 设置域名的DNS以将*.example.com映射到服务器的IP地址
  2. 将Apache设置为使用通配符vhost:<VirtualHost IP:80>ServerAlias *.example.com example.com
  3. 在您的PHP脚本中,您可以参考$_SERVER['HTTP_HOST']来确定用户正在访问哪个子站点,并从那里定制您的内容。

答案 1 :(得分:1)

这实际上取决于每个城市有多少信息不同。看起来你有三个选择。

  1. 单独的数据库(结构完全相同但数据不同)
  2. 一个名为CityBasedContent的表的数据库(使用CityId,内容和内容键,例如。SANDIEGO -> logo -> "img/sandiego.gif"
  3. 只改变一些图像可能是一些css的颜色 - 即。他们之间没有太多变化。我会做@Marc B建议和/或根据他们的cityId将css / img放在文件夹中。因为它会使切换更容易。
  4. 当人们加载页面时,你会检查它们的位置 - 你可能想要做“你确定”的那种对话框,它会询问它们实际上是你所检测到的城市。

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

答案 2 :(得分:0)

Q1)你有一个数据库中的城市,然后是你想要展示的任何城市,你可以通过cityid进行。

Q2)再次,由cityid显示数据。

答案 3 :(得分:0)

为此,您可以创建两个表。

表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. 您可以确定用户所在的城市并从table1
  2. 获取城市ID
  3. 使用表1中的外键
  4. 选择表2中与该城市相关的内容
  5. 要处理图像,您可以根据严格的命名约定(例如img-brisbane-header.jpg,img-cairns-header.jpg)为每个城市制作不同的图像来获取图像。
  6. 有很多不同的方法可以做到这一点。这取决于每个城市是否会有不同的内容,或只是少数几个。否则,它将更具技术性,因为您需要确定哪些内容适用于哪个城市。这需要调整你的sql表。