【发布时间】:2012-10-29 21:16:43
【问题描述】:
我正在寻找一种在一个虚拟主机帐户上支持多个域的解决方案,这必须通过 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)
【问题讨论】:
-
为什么不简单地在 apache 中设置 2 个虚拟主机?
标签: php apache .htaccess codeigniter mod-rewrite