![](/img/trans.png)
[英]how to Pass query string in 404 error redirect through .htaccess?
[英]How to get `$_POST` query when 404 redirected through .htaccess?
这个问题与我之前的问题有些相关。 使用$_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设置将其重定向到index.php
时,如何获取$_POST
变量
ErrorDocument 404 /index.php
在这里查看答案: http : //www.brainonfire.net/blog/apache-pitfall-errordocument-post/
我用这个解决了我的问题。
或者把它放在.htaccess文件中:
RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /yourErrorDocument.php [L]
使用以下指令:
ErrorDocument 404 /index.php
apache webserver执行内部重定向到新位置。 内部意味着,客户端(浏览器)不会更改其地址栏中的URL,因为该重定向不会传达给浏览器。
因为它是重定向,所以POST请求变为GET请求。
您可以通过查看以下两个$_SERVER
变量来看到这一点:
$_SERVER['REDIRECT_REQUEST_METHOD'] # POST
$_SERVER['REQUEST_METHOD'] # GET
简而言之,您不能使用ErrorDocument
指令对HTTP POST请求进行URL重写。
您需要使用mod_rewrite
模块或创建自己的apache处理程序。
使用FallbackResource
指令而不是Apache的ErrorDocument
指令:它在Apache网站上使用FallbackResource技巧
例:
FallbackResource /404.php
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.