【问题标题】:Use one instance of Yourls URL shortner with multiple domains在多个域中使用 Yourls URL Shortner 的一个实例
【发布时间】:2014-12-11 05:28:00
【问题描述】:

我一直在寻找一种在多个域中使用Yourls 的方法,主要问题是在配置 Yourls 时,您需要在 config.php 文件中提供域名(YOURLS_SITE 常量)。 仅将一个域配置为指向 Yourls 的实际多个域会导致意外行为。

我环顾四周,找不到解决此问题的快速方法

【问题讨论】:

    标签: virtualhost yourls


    【解决方案1】:

    我找到了这个快速而肮脏的解决方案,并认为它可能对某人有用。

    在 config.php 文件中,我将常量定义更改为基于 $_SERVER['HTTP_HOST'] 的值,这对我有用,因为我在设置此标头的服务器之前有一个代理,您也可以定义您的 Apache 服务器上的虚拟主机,它应该工作相同(也许您需要使用 $_SERVER['SERVER_NAME'] 代替)。

    所以在 config.php 我改变了:

    define( 'YOURLS_SITE', 'http://domain1.com');
    

    if (strpos($_SERVER['HTTP_HOST'],'domain2.com') !== false) {
            define( 'YOURLS_SITE', 'http://domain2.com/YourlsDir');
    
            /* domain2 doesn't use HTTPS */
            $_SERVER['HTTPS']='off';
    
    } else {
            define( 'YOURLS_SITE', 'https://domain1/YourlsDir');
    
            /* domain1 always uses HTTPS */
            $_SERVER['HTTPS']='on';
    
    }
    

    注意1:如果 Yourls 位于 html 根目录中,您可以从 URL 中删除 /YourlsDir 注意2:YOURLS_SITE中的url不能以/结尾

    希望这对其他人有帮助

    【讨论】:

      【解决方案2】:

      我会在 config.php...

      中使用这一行
      define('YOURLS_SITE', 'http://' . $_SERVER['HTTP_HOST'] . '');
      

      (注意添加任何 /subdirectory 或任何适用的内容)

      那么只要您的 apache 主机配置正确,任何指向该目录的域或子域都可以工作。但请记住,任何重定向都适用于任何域,因此 domain.one/redirect == domain.two/redirect

      【讨论】:

      • 如果您对所有域都具有相同的配置,那将是一个好主意。就我而言,每个域都有不同的配置(启用/禁用 SSL),所以我必须检查使用了哪个域
      猜你喜欢
      • 2021-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-09
      • 2016-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多