我有這個 .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(); }
這就是這裡的實際問題,這與 URL 重寫無關。
如果您傳送這樣的原始請求,PHP 將不會填入
$_POST
。您需要傳送application/x-www-form-urlencoded
或multipart/form-data
。