我一直在寻找一种方法来将Yourls用于多个域,主要问题是在配置Yourls时,您需要在config.php文件中提供域名(YOURLS_SITE常量)。 仅使用指向Yourls的实际多个域配置一个域会导致意外行为。
我环顾四周,找不到快速破解这个
答案 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中的网址不得以/
结尾希望这会帮助其他人