簡體   English   中英

404通過.htaccess重定向時如何獲取`$ _POST`查詢?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM