【问题标题】:apache redirect based on a form values基于表单值的apache重定向
【发布时间】:2020-03-22 02:06:31
【问题描述】:

我有一个以 Apache/2.2.34 为前端的旧 Web 应用程序。我计划使用 RewriteEngine 和 RewriteRule 重定向一些请求而不更新应用程序。但是,我需要的规则之一是依赖于表单值。例如,只有当表单元素“form_action”等于 5 时,我才想将“/navigation”重定向到“其他地方”。在 Apache 中有没有办法做到这一点?

【问题讨论】:

  • 您需要用您喜欢的语言编写一个 Web 应用程序来处理这些表单帖子并发出适当的重定向。 Apache 本身不会检查 POST 请求的正文。
  • 您可以使用method = 'get' 让Apache 访问表单数据吗?
  • 您的<form> method 属性是GET 还是POST?如果未指定,则为GET
  • for action 通常是一个 url。不是数字
  • @Jay 请看这个关于formaction w3schools.com/tags/att_input_formaction.asp

标签: apache


【解决方案1】:

表单操作值是 url,可以是绝对 url,也可以是相对。 不确定确切的重写规则,但根据其他重写示例编写

用于内部重定向

RewriteEngine on
RewriteRule    "^/5"  "/navigation" [PT]

用于外部重定向

RewriteEngine on
RewriteRule    "^/5"  "/navigation" [R]

【讨论】:

  • 问题已更新,所以答案必须更新
【解决方案2】:

也许可以解决您的问题的最佳方法是通过GET request 发送数据。这样做的原因是您可以将表单的输入作为 URL 参数传递,然后创建一个RewriteRule 来检查参数值。

即:

<form method="get" action="/nagivation">
  <input type="text" name="form_action" value=""> <!-- Your 'form_action' input -->
  <input type="submit" value="Submit"> <!-- Your submit button -->
</form>

只有当用户在输入中填写“5”值并提交表单时,上述表单才会将其数据发送到https://www.example.com/nagivation?form_action=5。此外,您会在浏览器中看到 URL 更改为我提供的 URL。

所以,如果您的 RewriteRule 捕获到 /navigation?form_action=5,您就可以成功进行重定向。

查看此example 以获得更好的理解

最后,here 可以看到如何使用 URL 参数添加 RewriteRule。

【讨论】:

  • 我提出问题的原因是希望不改变应用程序,从 post 更改为 get 会改变我的情况下的应用程序
  • 在这种情况下,请尝试将此作为答案:stackoverflow.com/questions/358263/…
猜你喜欢
  • 1970-01-01
  • 2011-08-26
  • 2017-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-30
相关资源
最近更新 更多