![](/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.