【发布时间】:2014-12-11 05:28:00
【问题描述】:
我一直在寻找一种在多个域中使用Yourls 的方法,主要问题是在配置 Yourls 时,您需要在 config.php 文件中提供域名(YOURLS_SITE 常量)。 仅将一个域配置为指向 Yourls 的实际多个域会导致意外行为。
我环顾四周,找不到解决此问题的快速方法
【问题讨论】:
标签: virtualhost yourls
我一直在寻找一种在多个域中使用Yourls 的方法,主要问题是在配置 Yourls 时,您需要在 config.php 文件中提供域名(YOURLS_SITE 常量)。 仅将一个域配置为指向 Yourls 的实际多个域会导致意外行为。
我环顾四周,找不到解决此问题的快速方法
【问题讨论】:
标签: virtualhost yourls
我找到了这个快速而肮脏的解决方案,并认为它可能对某人有用。
在 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不能以/结尾
希望这对其他人有帮助
【讨论】:
我会在 config.php...
中使用这一行define('YOURLS_SITE', 'http://' . $_SERVER['HTTP_HOST'] . '');
(注意添加任何 /subdirectory 或任何适用的内容)
那么只要您的 apache 主机配置正确,任何指向该目录的域或子域都可以工作。但请记住,任何重定向都适用于任何域,因此 domain.one/redirect == domain.two/redirect
【讨论】: