How to get `$_POST` query when 404 redirected through .htaccess?

前端 未结 3 626
别跟我提以往
别跟我提以往 2021-01-18 08:29

This question is somewhat related to my previous question. The trick of using $_SERVER[\'REDIRECT_QUERY_STRING\'] seems to work only for $_GET var

相关标签:
3条回答
  • 2021-01-18 08:56

    Check answer here : http://www.brainonfire.net/blog/apache-pitfall-errordocument-post/

    I solved my problem using this.


    OR put this in your .htaccess file :

    
        RewriteEngine On
        RewriteBase /
    
    
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule . /yourErrorDocument.php [L]
    
    
    0 讨论(0)
  • 2021-01-18 08:59

    With the following directive:

    ErrorDocument 404 /index.php
    

    the apache webserver does an internal redirect to the new location. Internal means, the client (browser) won't change the URL in it's address bar because that redirect is not communicated to the browser.

    Because it's an redirect, the POST request is turned into a GET request.

    You can see this by looking into the following two $_SERVER variables:

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

    So in short, you can not use the ErrorDocument directive to do URL rewriting for HTTP POST requests.

    You need to use the mod_rewrite module for this or create your own apache handler.

    0 讨论(0)
  • 2021-01-18 08:59

    Use the FallbackResource directive instead of the ErrorDocument directive of Apache: it does the trick FallbackResource on Apache website

    Example:

    FallbackResource /404.php
    
    0 讨论(0)
提交回复
热议问题