首頁  >  問答  >  主體

使用 .htaccess 時 POST 資料遺失

我有這個 .htaccess 文件,它執行一些重定向和重寫(刪除擴展名等),但是當我使用 POST 方法發送資料時,它會一路丟失。

嘗試新增此條件來阻止使用 POST 資料的請求重定向,但它不起作用。

Options +FollowSymLinks
RewriteEngine  On

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^resume-.*/([0-9]+)$ /book.php?id= [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=&page=&orderby= [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=& [QSA,L]


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

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

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

RewriteRule ^$ /index.php [NC]

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

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

這是我的貼文請求的樣子

這是我的 destroy_session.php 檔案中的程式碼

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

P粉436410586P粉436410586257 天前370

全部回覆(1)我來回復

  • P粉333395496

    P粉3333954962024-01-11 11:18:01

    這就是這裡的實際問題,這與 URL 重寫無關。

    如果您傳送這樣的原始請求,PHP 將不會填入 $_POST。您需要傳送 application/x-www-form-urlencodedmultipart/form-data

    回覆
    0
  • 取消回覆