【发布时间】:2012-05-10 22:22:06
【问题描述】:
这个问题和我的previous question有点关系。使用$_SERVER['REDIRECT_QUERY_STRING'] 的技巧似乎只适用于$_GET 变量。
好吧,我有一个 index.php 文件,它处理所有 404 redirects。
如果用户请求一个不存在的页面,例如apple.php?item=23,那么使用$_SERVER['REDIRECT_QUERY_STRING'] 我可以获得$_GET 变量item=23,但如果该变量不是$_GET 而是$_POST然后$_SERVER['REDIRECT_QUERY_STRING'] 不起作用。
当我使用以下 .htaccess 设置将$_POST 变量重定向到index.php 时,如何获取它
错误文档 404 /index.php
【问题讨论】:
-
这不是一个“技巧”,它只是一个糟糕的解决方案。为什么不使用
mod_rewrite? ps:不,404重定向后你已经丢失了post数据,你无法获取它 -
不确定,但我认为您在重定向时会丢失所有 POST 数据。你需要它做什么?也许有一些不同的方式
-
请注意,没有
404 redirect这样的东西。 4xx响应码表示客户端错误(404表示客户端请求的资源在服务器上不存在),3xx码用于重定向。如果你想强制客户端重新提交相同的 POST 请求到一个新的 URI,你应该使用 307 状态码。但我怀疑你在这里实际需要使用的是RewriteCond %{REQUEST_FILENAME} !-f和RewriteCond %{REQUEST_FILENAME} !-d来将不存在的文件的请求重写为特定脚本。 -
当用户请求一个不存在的页面时,我想查看 index.php 的内容和动态内容,具体取决于 post 变量(不更改 url 地址栏中的 url)
-
除非用户已提交表单,否则不应发送发布请求,并且您网站上的所有表单都应指向存在的资源。 mod_rewrite 将是你想要的。