我正在寻找一种解决方案来支持一个虚拟主机帐户上的多个域,这必须通过 htaccess 来完成。所以想法是,您调用 domainx 并使用 htaccess 服务器将 webroot“伪造”到与域名对应的子文件夹。我已经有了一个“解决方案”,但这并不完美。
我遇到的问题:
- 通过 PHP 重定向(使用 CodeIginiter 的 base_url()),导致;例如“http://www.domein1.nl/domein1.nl/”。
- 它在我的本地服务器上不起作用。
所以,我目前正在使用的 htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} domein1.nl$ [NC]
RewriteCond %{REQUEST_URI} !^/domein1.nl/.*$
RewriteRule ^(.*)$ /domein1.nl/$1 [L]
RewriteCond %{HTTP_HOST} domein2.nl$ [NC]
RewriteCond %{REQUEST_URI} !^/domein2.nl/.*$
RewriteRule ^(.*)$ /domein2.nl/$1 [L]
</IfModule>
base_url() 的 CodeIgniter PHP 代码。服务器变量“SCRIPT_NAME”添加了第二个域文件夹,标记为问题 1。如果根文件夹被正确伪造,则不会发生这种情况;但这真的可能吗?
if (isset($_SERVER['HTTP_HOST']))
{
$base_url = isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) !== 'off' ? 'https' : 'http';
$base_url .= '://'. $_SERVER['HTTP_HOST'];
$base_url .= str_replace(basename($_SERVER['SCRIPT_NAME']), '', $_SERVER['SCRIPT_NAME']);
}
最后但并非最不重要的一点是,当我通过主机文件进行重定向时,它不能在我的本地服务器上运行:
192.168.2.9 local.domein1.nl
192.168.2.9 local.domein2.nl
Sooo.. 我该如何解决这些问题?提前致谢!
编辑:我的本地服务器的问题是固定的..咳嗽“sudo a2enmod rewrite”成功了..
Edit2:自从stormdrain 开始讨论文件夹结构以来,这里是我的澄清多个CI 应用程序。
主要 .htaccess 位置/webroot
/public_html/.htaccess
域1:
/application/domain1/ (domain1 application path)
/application/system/ (shared system path)
/public_html/domain1/index.php (CI domain1 index)
域2:
/application/domain2/ (domain2 application path)
/application/system/ (shared system path)
/public_html/domain2/index.php (CI domain2 index)