ExpressionEngine、mod_rewrite 和子域

ExpressionEngine、mod_rewrite 和子域

提前谢谢大家;这是一个了不起的事情。

我的任务是将之前托管在其自己的服务器上的子域移植到现有的 ExpressionEngine 安装中。

以前,有问题的网站位于 franchise.domain.com - 现在数据(或至少 ExpressionEngine 组/模板)位于 www.domain.com/franchise 。

问题是:鉴于我无法访问 httpd(我认为这可能会有帮助),并且无法访问 .htaccess 文件,我该如何以一种对最终用户透明的方式将 franchise.domain.com 指向 www.domain.com/franchise?

另外一个问题:同一个 .htaccess 文件也被用来隐藏 ExpressionEngine 执行复杂的数据库程序所需的 /index.php/。

换句话说,这就是我需要的:

用户看到:franchise.domain.com/whatever 服务器看到:www.domain.com/index.php/franchise/whatever

我自己已经花了几天时间在做这件事,查阅了 Google 和 EE 文档、论坛和 Wiki,不幸的是,这是一个极其紧迫的项目——我们的长期收入来自于特许经营权的销售。

有人可以帮忙吗?

.htaccess 中的相关行如下:

#Temporarily redirect franchise.domain.com to domain.com/franchise, 
#just so we have SOMETHING up
RewriteEngine On
RewriteCond %{HTTP_HOST} franchise.domain.com
RewriteRule ^(.*)$ http://www.domain.com/franchise/$1 [R,L]

#Rewrites domain.com to http://www.domain.com, may be interfering 
#with my attempts, but I'm not sure.
RewriteCond %{HTTP_HOST} ^domain\.com [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]

#Removes /index.php/ from EE urls
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /index.php/$1 [L]

不幸的是,我无法让第一组指令对最终用户透明……我的理解是,它涉及一定程度的巫术,这超出了我的理解范围。(关于添加哈希或标记,以阻止 Apache 无限重定向)。

再次感谢大家。

答案1

您需要mod_proxy在反向代理配置中使用,或者作为带有[P]参数的重定向使用RewriteRule。请参阅:http://httpd.apache.org/docs/2.2/mod/mod_proxy.html

相关内容