.htaccess从域的子目录重写到不同域的子目录

时间:2012-04-23 15:54:59

标签: .htaccess mod-rewrite

好的,我发现了一些与非常相似的问题相关的线程,但是没有运气使用我自己网站提供的答案。基本上我有2个站点,映射如下:

/public_html/ - points to main domain (www.site1.com)
/public_html/site2.com - points to secondary domain (www.site2.com)
/public_html/portal - points to my target subdirectory

我正在尝试向www.site2.com/portal请求所有请求以透明方式加载www.site1.com/portal,我仍然希望www.site2.com/portal显示在地址栏中。< / p>

RewriteCond %{HTTP_HOST} ^(www\.)?site2\.com [NC]
RewriteCond %{REQUEST_URI} ^/portal/(.*)$
RewriteRule ^/(.*) /portal/$1 [L]

根本不起作用

RewriteCond %{HTTP_HOST} ^(www\.)?site2\.com$ [NC]
RewriteCond %{REQUEST_URI} ^/portal/(.*)$
RewriteRule ^(.*)$ http://site1.com/portal/$1 [L]

带我去http://site1.com/portal/site2.com/portal

我已经在墙上撞了一下墙几天,任何帮助都会受到赞赏!

1 个答案:

答案 0 :(得分:1)

除非在httpd.conf中启用mod_proxy,否则您当前的设置不会支持您要获取的内容。所以这里有两个选项:

选项1:启用mod_proxy并保留当前目录结构

将此代码放在.htaccess目录下的public_html/site2.com

RewriteCond %{HTTP_HOST} ^(www\.)?site2\.com$ [NC]
RewriteRule ^(portal/.*)$ http://site1.com/$1 [L,NC,P]

选项2:保留当前目录结构并创建如下符号链接:

/path-to/public_html/site2.com/portal -> /path-to/public_html/portal

然后将此代码放在.htaccess目录下的public_html/site2.com

Options +FollowSymLinks -MultiViews

恕我直言选项#2对你来说会更容易,因为它只需要创建一个符号链接(我相信你正在使用*nix的一些风格。