Apache RedirectMatch 是这些网址的好解决方案吗

all*_*lar -2 301-redirect apache-2.2

我有一个 Rails 应用程序,当我收到一些带有大量垃圾字符的奇怪 url 时,它会抛出异常。例如

https://example.com/pages/28-faq-common-questions-answered++++++++++++++++++++++++Result:+%ED%E5+%ED%E0%F8%EB%EE%F1%FC+%F4%EE%F0%EC%FB+%E4%EB%FF+%EE%F2%EF%F0%E0%E2%EA%E8
Run Code Online (Sandbox Code Playgroud)

我绝对想摆脱这些 Rails 异常。这些查询永远不会由真正的用户生成。

我正在考虑在 Apache 中使用 RedirectMatch 并将这些类型的查询永久重定向到站点的主页。

问题 1:这是一个好主意还是有什么更好的办法?

问题 2:如何创建规则以足够的灵活性成功地做到这一点,这样我就不必每次新机器人访问我的网站时都编写很多规则?

我的粗略尝试如下,但没有任何反应。它似乎根本不起作用。

 RedirectMatch permanent /\+\+\+\+\+/g https://example.com
Run Code Online (Sandbox Code Playgroud)

use*_*ser 5

问题 1:这是一个好主意还是有什么更好的办法?

问题 2:如何创建规则以足够的灵活性成功地做到这一点,这样我就不必每次新机器人访问我的网站时都编写很多规则?

更好的解决方法(也巧合也解决了 #2)是修复您的应用程序,使其在被无效请求命中时不会抛出异常。相反,它应该检查输入的任何必要先决条件,并在输入出现问题时优雅地退出,记录任何相关详细信息并向用户显示友好的错误消息。

如果由于某种原因无法轻易修改应用程序以执行此操作,请至少考虑将其包装在可以捕获异常的外部容器中,记录它们的详细信息,并向用户显示不包含异常的友好错误消息细节。这并不能解决根本问题,但至少可以防止用户因堆栈跟踪而感到不便。

最近还讨论了我们的姐妹网站上的应用程序抛出异常暴露堆栈信息的问题,信息安全的问题,如果我的网站抛出堆栈信息,我应该关心?. 目前最高投票(迄今为止)对该问题的回答首先声明:

在生产(与开发相反)环境中,应将堆栈跟踪和错误消息记录到文件中,而不是转储到屏幕上。这是因为攻击者可能会了解有关您的系统的信息,这可能有助于破坏您的系统。

如果您修复应用程序以这种方式工作,您也根本不需要重定向规则。