6

这个问题与我之前的问题有些相关。使用的技巧$_SERVER['REDIRECT_QUERY_STRING']似乎只适用于$_GET 变量。

好吧,我有一个index.php文件可以处理所有404 redirects.

如果用户请求一个不存在的页面,例如apple.php?item=23,那么使用$_SERVER['REDIRECT_QUERY_STRING']I 可以获取$_GET变量item=23,但如果变量不存在$_GET$_POST$_SERVER['REDIRECT_QUERY_STRING']不起作用。

$_POST当我将变量重定向到index.php使用以下 .htaccess 设置时,如何获取变量

错误文档 404 /index.php

4

3 回答 3

7

在这里检查答案:http ://www.brainonfire.net/blog/apache-pitfall-errordocument-post/

我用这个解决了我的问题。


或者把它放在你的 .htaccess 文件中:

    重写引擎开启
    RewriteBase /


    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    重写规则。/yourErrorDocument.php [L]

于 2013-02-26T12:34:42.820 回答
5

使用以下指令:

ErrorDocument 404 /index.php

apache 网络服务器执行内部重定向到新位置。内部意味着,客户端(浏览器)不会更改其地址栏中的 URL,因为该重定向未传达给浏览器。

因为是重定向,所以 POST 请求变成了 GET 请求。

您可以通过查看以下两个$_SERVER变量来看到这一点:

$_SERVER['REDIRECT_REQUEST_METHOD'] # POST
$_SERVER['REQUEST_METHOD'] # GET

所以简而言之,您不能使用该ErrorDocument指令对 HTTP POST 请求进行 URL 重写。

您需要为此使用该mod_rewrite模块或创建自己的 apache 处理程序。

于 2012-05-01T11:36:33.813 回答
5

使用FallbackResource指令而不是ErrorDocumentApache 的指令:它可以 在 Apache 网站上使用 FallbackResource

例子:

FallbackResource /404.php
于 2017-04-28T14:38:38.153 回答