首页  >  问答  >  正文

使用 .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粉436410586306 天前420

全部回复(1)我来回复

  • P粉333395496

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

    这就是这里的实际问题,这与 URL 重写无关。

    如果您发送这样的原始请求,PHP 将不会填充 $_POST。您需要发送 application/x-www-form-urlencodedmultipart/form-data

    回复
    0
  • 取消回复