【问题标题】:Domain (country) realted banners in PHP based system基于 PHP 的系统中的域(国家)相关横幅
【发布时间】:2010-08-15 12:23:56
【问题描述】:

我在我们的服务器上安装了一个基于 PHP 的 Youtube 克隆系统。

在几个国家/地区使用相同的系统。假设我有 3 个域都指向同一个系统:
www.site.hr
www.site.ba
www.site.rs

他们都重定向到一个名为 www.site.tv

的网站

这 3 个国家/地区的语言非常相似,因此每个国家/地区使用相同的系统是有意义的,但在系统内部显示与该特定国家/地区相关的横幅会很棒。

最好的方法是什么,甚至可能吗? 我的想法是:
1)查找每个访问者的 IP 并检查它来自哪个国家或
2)创建3个子域hr.site.tv、ba.site.tv和rs.site.tv,它们都是
不同的系统,但共享同一个数据库...

我知道第一个想法是有缺陷的,而第二个想法是合理的。 你有更好的主意吗?

【问题讨论】:

    标签: php dns youtube subdomain


    【解决方案1】:

    如果您不需要强大的系统,而只是增加为某些(大多数)用户设置横幅的可能性,您可以使用这个简单的解决方案:

    www.site.hr redirects to www.site.tv?lang=hr
    www.site.ba redirects to www.site.tv?lang=ba
    www.site.rs redirects to www.site.tv?lang=rs
    

    然后将 lang 参数存储在 $_SESSION 中,并在人们不断访问内部页面时使用它来显示相关横幅。

    当该参数在会话中不存在时(例如机器人),您需要有一个默认行为。

    您将受益于很少的重复内容和对现有代码的少量更改(我想)。

    【讨论】:

    • 对于我的问题,这是一个非常简单但优雅的解决方案。我有一个把简单的事情复杂化的问题。谢谢
    【解决方案2】:

    IP 地址查找和 GeoIP 不可靠。嗅探 $_SERVER['HTTP_ACCEPT_LANGUAGE'] 不会有太大帮助,因为它们可能返回相同的语言,或者如果用户更喜欢英语,则根本不返回。

    如果这些是您的内部横幅,建议使用子域或同一域中的不同 URL 路径。第三方广告提供商可能有自己的市场定位算法。

    【讨论】:

      【解决方案3】:

      您的想法 1) 可能适用于大多数情况,但有时用户会根据他们连接到 Internet 的方式得到错误的想法,并给您带来诸如搜索引擎之类的问题,您可能希望将所有三个网站都编入索引。

      2) 由于“所有独立的系统”部分存在问题。维护三个独立的代码库来做本质上相同的事情是浪费精力,如果数据库结构必须适合所有这些,那么对数据库结构进行更改将很棘手。

      更好的选择是只有一个系统,但将其连接到所有三个域,并在其中放置一些逻辑以显示每个国家/地区的相应横幅。您可以将您的 Web 服务器配置为将三个域名视为别名,并将来自所有域名的请求发送到同一个 PHP 应用程序。在 PHP 中,您可以获得客户端请求的站点名称为$_SERVER['SERVER_NAME']。您可能正在使用一个框架或 PHP 库,它提供了一种不同的方式来在您的网站上包含特定于域名的内容。

      客户端可能会发送您不期望的主机名,因此请确保您有一个允许的主机名白名单,并且如果您的服务器收到无法识别的内容,则会拒绝该请求。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-08-19
        • 1970-01-01
        • 2018-01-17
        • 2013-06-04
        • 1970-01-01
        • 2015-06-28
        • 1970-01-01
        相关资源
        最近更新 更多