使用具有多个域的一个Yourls URL缩短器实例

时间:2014-10-16 00:30:34

标签: virtualhost yourls

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

我环顾四周,找不到快速破解这个

2 个答案:

答案 0 :(得分:4)

我会在 config.php ...

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

(注意添加任何/子目录或其他适用的东西)

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

答案 1 :(得分: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中的网址不得以/

结尾

希望这会帮助其他人