我很确定这部分与this question完全相反,但它只是两个部分而且有一些额外的错综复杂。
我最近为一个组织继承了一个网站(我们将其称为theorganization.com
)并安装了Joomla!,而有人刚刚去购买了一个辅助域名(anevent.com
),用于活动寄宿期望我们可以在我们现有网站的相关部分“指出”它。是的,简单的“屏蔽”可以在一个方向完成此操作,但我想规范化URL并使用mod_rewrite
>> 方向将其映射到< em> etc。(这是不是无限循环:一个方向是301重定向;另一个是URL掩码。)
我想在现有的Joomla上举办有关活动的信息!安装在theorganization.com/eventname/
可访问的部分,并将其与新域相对应。 注意: Joomla!使用重写本身,因此不将是eventname
目录中的物理目录theorganization.com
。 (不确定是否/如何影响这里的任何事情。)
具体来说,我希望向theorganization.com/eventname
或anevent.com
(有或没有www
或尾随斜线)发出所有请求,以便为Joomla提供内容!通常会将theorganization.com/eventname/
归为www.anevent.com/
,同时将网址显示为theorganization.com
。当然,这些级别下的所有子目录和文件也应相应地进行映射。
在查看Apache's mod_rewrite
docs之后,我想出了下面的尝试。
适用于RewriteEngine On
# STRIP "www" IF PRESENT (undesired, but necessary for now due to other issues)
RewriteCond %{HTTP_HOST} ^www.theorganization.com$ [NC]
RewriteRule ^(.*)$ http://theorganization.com/$1 [R=301,L]
RewriteCond %{REQUEST_URI} ^/eventname/?(.*)$ [NC]
RewriteRule ^http://(www\.)theorganization.com/eventname/?(.*)$ "http://www.anevent.com/$2" [R=301,L]
# ...
# ... default Joomla! .htaccess code here ...
:
.htaccess
经过多次试验,我发现我忘记了Joomla!默认情况下在anevent.com
中有自己的重写,我无意中覆盖了它们。 (谢天谢地,我found a replacement。)但第二个(有效的)重定向似乎没有生效。我可能做错了什么?
适用于RewriteEngine On
# ADD "www" IF MISSING
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
# UNCONDITIONALLY DEFER ALL REQUESTS HERE TO theorganization.com/eventname/
RewriteRule ^(.*)$ http://theorganization.com/eventname/$1 [L]
:
http://theorganization.com/eventname/FOO
这看起来效果很好(基于我可以让第一个工作的假设)。但是,最后一行的无条件规则似乎充当301/302或类似的东西并加载http://www.anevent.com/FOO
。如何修改此设置以实现“屏蔽”,以便用户只能在浏览器中看到{{1}},但仍然定向到相同的内容?
答案 0 :(得分:1)
对于第一部分,将以下内容添加到theorganization.com
网站
RewriteEngine on
RewriteBase /
#if its on theorganization.com domain
RewriteCond %{HTTP_HOST} theorganization\.com$ [NC]
#if the original request has eventname in it
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /eventname/ [NC]
# redirect eventname to anevent.com
RewriteRule ^eventname/(.*)$ http://www.anevent.com/$1 [R=301,L]
对于anevent.com:
您的规则具有完全限定的网址,因此会自动重定向。 我修改它如下所示进行服务器端重写,如下所示。
RewriteEngine on
RewriteBase /
#if not internal redirect
RewriteCond %{ENV:REDIRECT_STATUS} !200
RewriteRule ^(.*)$ theorganization.com/eventname/$1 [L]