我之前问过一个很长很复杂的问题,现在我有一些代码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
这会将所有内容重定向到您指定的目的地,而不附加任何其他内容。