2

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

我环顾四周,找不到对此的快速破解

4

2 回答 2

6

我会在config.php中使用这一行...

define('YOURLS_SITE', 'http://' . $_SERVER['HTTP_HOST'] . '');

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

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

于 2015-03-27T23:43:18.287 回答
2

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

在 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 不能以 / 结尾

希望这对其他人有帮助

于 2014-10-16T00:30:33.630 回答