我正在尝试将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
行运行良好。