【问题标题】:serving different content based on the domain in codeigniter在 codeigniter 中根据域提供不同的内容
【发布时间】:2011-04-23 05:00:34
【问题描述】:

我打算用 codeigniter 开发一个网站。但不确定我要使用的方法是否是最好的方法。同一站点将有许多附加域。但内容将根据用于访问该站点的域进行过滤。

例如,如果用户来自域 siteusa.com 然后内容将显示相应过滤特定用户。如果用户来自siteuk.com/sitechina.com,则内容将被相应地过滤等等......

我打算做这样的事情来检测 url 并提供内容

 $ref = getenv("HTTP_REFERER");
    echo $ref; 

我看到的另一个问题是codeigniter的baseurl设置,但我看到了here的解决方案

/*
|--------------------------------------------------------------------------
| Base Site URL
|--------------------------------------------------------------------------
|
| URL to your CodeIgniter root. Typically this will be your base URL,
| WITH a trailing slash:
|
| http://www.your-site.com/
|
*/

if(isset($_SERVER['HTTP_HOST']))
{
$config['base_url'] = isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) == 'on' ? 'https' : 'http';
$config['base_url'] .= '://'. $_SERVER['HTTP_HOST'];
$config['base_url'] .= str_replace(basename($_SERVER['SCRIPT_NAME']), '', $_SERVER['SCRIPT_NAME']);
}

else
{
$config['base_url'] = 'http://localhost/';
}

这是最好的方法吗?我可能会遇到任何瓶颈吗?

站点的主域将提供未经过滤的内容,每个插件域将根据后端为每个域设置的过滤器对其进行过滤。

【问题讨论】:

  • 在您的基本 URL 中,您不能只执行 $_SERVER['HTTP_HOST'] 这样的操作,这将允许您在本地计算机上拥有多个环境进行测试,至于过滤,我建议您使用什么域标记内容,它可用于在运行查询时将其与当前域匹配

标签: php codeigniter multiple-domains server-variables


【解决方案1】:

.htaccess 规则是否适合您?请注意,CI 也有用于对 URL 进行细粒度控制的 routes.php 文件,但我认为不是在域级别。

【讨论】:

    【解决方案2】:

    我认为这样做没有任何问题。这不会造成瓶颈,因为附加功能的开销可以忽略不计。

    值得我为我运行的 SaaS 服务做同样的事情,其中​​多个网站(数千个)指向相同的代码点火器安装。我没有任何问题。

    至于过滤,只需确保您设置了正确的索引,因为您需要通过 HTTP_HOST 变量进行查询。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-15
      • 2013-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多