Home > Back-end >  POST data lost when using .htaccess
POST data lost when using .htaccess

Time:06-22

I have this .htaccess file who does some redirecting and rewriting (removing extensions .. etc) but when i send data using the POST method it gets lost along the way.

tried adding this condition to stop Request with POST data from redirecting but it's not working.

Options  FollowSymLinks
RewriteEngine  On

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^resume-.*/([0-9] )$ /book.php?id=$1 [QSA,L]


RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^channel-books/([0-9] )/([0-9] )/([0-9] )$ /getChannelBooks.php?idChaine=$1&page=$2&orderby=$3 [QSA,L]


RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^channel-books/([0-9] )/([a-zA-Z] )$ /getChannelBooks.php?idChaine=$1&$2 [QSA,L]


RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^chaine-.*/([0-9] )$ /model_contenu_de_chaine.php?idChaine=$1 [QSA,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^search-([0-9] )$ /search_page.php?search=$1 [QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^audio-([0-9] )$ /audiobook.php?id=$1 [QSA]

RewriteRule ^$ /index.php [NC]

RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{THE_REQUEST} \s/([^.] )\.php [NC]
RewriteRule ^ /%1 [NE,L,R=307]

RewriteRule ^([^\.] )$ $1.php [NC]

Here's what my post request looks like

and this is the code in my destroy_session.php file

if(isset($_POST['action']) && $_POST['action'] == 'logout'){
   session_unset("username");
   session_destroy();
}

CodePudding user response:

Here's what my post request looks like

That's the actual issue here, this not related to the URL rewriting.

PHP is not going to populate $_POST, if you send a raw request like that. You need to send application/x-www-form-urlencoded or multipart/form-data.

  • Related