提前谢谢大家;这是一个了不起的事情。
我的任务是将之前托管在其自己的服务器上的子域移植到现有的 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