【问题标题】:Creating a city-specific website (city1.example.com, city2.example.com) [closed]创建一个特定城市的网站(city1.example.com、city2.example.com)[关闭]
【发布时间】:2023-03-13 17:19:01
【问题描述】:

如何制作一个包含不同城市的子域的网站?

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

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

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

问题 2:假设您不会每次都为新城市复制网站并稍微更改图像和文字,那么您如何针对城市进行更改?

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

【问题讨论】:

  • 嘿,为什么这不是一个真正的问题?我对如何解决这个问题感到困惑......

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


【解决方案1】:

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

表 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 中获取城市 ID
  2. 使用表1中的外键选择表2中与该城市相关的内容
  3. 要处理图像,您可以根据严格的命名约定(例如 img-brisbane-header.jpg、img-cairns-header.jpg)获取图像,为每个城市制作不同的图像。

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

【讨论】:

    【解决方案2】:

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

    1. 独立的数据库(完全相同的结构但不同的数据)
    2. 一个带有名为 CityBasedContent 的表的数据库(带有 CityId 和 content 以及 contentkey,例如SANDIEGO -> logo -> "img/sandiego.gif"
    3. 只更改几张图片也许是一些颜色的 css - 即。他们之间没有太多的变化。我会按照@Marc B 的建议做和/或根据他们的cityId 将css/img 放在文件夹中。因为它会使切换更容易。

    几乎当人们加载您检查他们所在的页面时 - 您可能想要执行“您确定”之类的对话框,询问他们实际上是否在您检测到的城市中。

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

    【讨论】:

    • Luke:不同站点之间没有什么区别,只是数据库不同,还有一些img和words的差异。欢迎来到
    • @thedethe 如果你有不同的“内容”并且你有托管,你可以拥有许多不同的数据库,我会使用不同的数据库。方式更清洁的方法,因为它很好地分开。我有类似的问题,我让人们根据他们的选择来搜索东西。基于该选择,我正在更改数据库(在推进 orm 中),然后使用带有标签的不同表(即 city_name 将替换为其他内容。我还为 img 和 css 管理不同的文件夹,例如 /img/$selectionId/ general.css. 如果 css 文件不存在,那么它将使用默认的通用文件
    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

      Q1) 你有一个数据库中的城市,然后无论你想显示什么,你都可以通过 cityid 来做。

      Q2) 同样,按 cityid 显示数据。

      【讨论】:

        猜你喜欢
        • 2012-09-17
        • 1970-01-01
        • 2021-02-14
        • 2019-06-12
        • 1970-01-01
        • 2020-06-20
        • 2018-07-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多