我有这个 .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粉3333954962024-01-11 11:18:01
这就是这里的实际问题,这与 URL 重写无关。
如果您发送这样的原始请求,PHP 将不会填充 $_POST
。您需要发送 application/x-www-form-urlencoded
或 multipart/form-data
。