使用 Apache RedirectPermanent 将所有请求发送到特定子文件夹

使用 Apache RedirectPermanent 将所有请求发送到特定子文件夹

我之前问过一个很长很复杂的问题,现在我有一些代码RedirectPermanent需要帮助。

我们正在将旧网站合并到新网站中,并且不关心将所有旧的 URL 映射到新网站的任何位置,因此所有 URL 都应永久重定向到特殊的 index.php,它将决定是否/在何处使用 php 重定向。

例外是一个子域,它应该做同样的事情,但是针对不同的index.php。

这是我想要完成的“伪配置”——稍微改变一下就可以了,但我无法让它忽略请求的完整路径,并且无条件地使用查询字符串转到我选择的 index.php。

#Subdomain from old site:
#Process querystring from root\oldsite\subdomain\index.php
<VirtualHost *:80>
    ServerName subdomain.oldsite.com
    RedirectPermanent / http://www.newsite.com/oldsite/subdomain/index.php  
</VirtualHost>

#ALL other requests of any kind regardless of path
#Process querystring from root\oldsite\index.php
# Must show www.newsite.com, NOT www.oldsite.com
<VirtualHost *:80>
    ServerName oldsite.com
    ServerAlias www.oldsite.com
    RedirectPermanent / http://www.newsite.com/oldsite/index.php    
</VirtualHost>

DNS 已设置,以便旧站点的所有内容都转到此服务器,这些是配置文件中的第一个 VirtualHost 条目。我如何修改此代码以转到给定的 index.php不管的路径。

www.oldsite.com                       ==> www.newsite.com\oldsite\index.php
www.oldsite.com/forum/anything/else   ==> www.newsite.com\oldsite\index.php
www.oldsite.com/faq/category/chosen   ==> www.newsite.com\oldsite\index.php
www.oldsite.com/about/us/index.php    ==> www.newsite.com\oldsite\index.php
subdomain.oldsite.com/anthing         ==> www.newsite.com\oldsite\subdomain\index.php

答案1

重定向不是您要查找的正确方法。重定向会将“全部”重定向并“将全部附加”到目标,但您想要最终的单个目标,因此请改用此方法:

RedirectMatch ^ http://newsite.example.com/oldsite/subdomain/index.php

这会将所有内容重定向到您指定的目的地,而不附加任何其他内容。

相关内容