尝试仅重定向站点根,404也重新路由



我正在尝试将www.oldsite.com重定向到www.newsite.com,但仅限于根目录。

oldsite.com/real/thing仍然存在,并且在其原始位置应该是世界可读的,但直接访问oldsite.com或www.oldsite.com应该重定向到www.newsite.com

我试着用一个简单的来做到这一点

Redirect / https://www.newsite.com

httpd.conf中,但这太激进了,不会正确显示oldsite.com/real/thing

我可以在站点根目录的index.html中进行元刷新,但这显然是不受欢迎的。这似乎是最合乎逻辑的选择,因为我想我真正的意思是,如果你以某种方式进入了常规索引页面,那么就去新的地方。

最终看起来有效的是这段代码,位于站点根目录的.htaccess文件中:

RewriteEngine On
RewriteRule ^$ https://www.newsite.com [R=301,L]

它正是我想要它做的,但我确实有一个问题。

oldsite.com/real/thing可以完美地导航到,但oldsite.com/foo/oops/not/here不存在,我希望弹出一个标准404,它也重定向到www.newsite.com

这不一定是一件坏事,也可能是我真正想要发生的事情,但我的印象是RewriteRule中的^$只与根目标匹配。那么,发生了什么事?

如果我想的话,我该如何将404重新安排到其他地方?

我想,我的解决方案看起来合理吗?让它更安全/更好/更智能的建议?

谢谢!

编辑:这是httpd.config文件中的ErrorDocument行。。。没什么特别的!

ErrorDocument 404 "Page not found."

我想我已经找到了自己问题的答案。

如果我将ErrorDocument行添加到.htaccess文件的顶部,它似乎在重写之前拦截了错误的URL。

因此,与其依赖于httpd.config中的行,而不知道处理的确切顺序,我将有一点代码重复。

这似乎是一个合理的代价。

同时,对于服务器上的其他虚拟主机,原始ErrorDocument行运行良好。

最新更新