我正在尝试让网络服务器将所有用户从 http 重定向到 https 。这是我正在使用的代码:
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HTTPS} !=on
RewriteRule ^(.*)$ https://%{SERVER_NAME}/$1 [R=301,L]
但是,我已经意识到,当用户最初向 http 发送包含信息的请求时,在此重写规则执行之后,POST数据似乎丢失了。
有没有办法,当重写为HTTPS时,确保也发送所有POST数据。
答案 0 :(得分:2)
有两个HTTP status codes 307
(临时)和308
(永久),您可以将其用于此类情况。这些状态代码与302
和301
重定向代码相同,但保持方法(GET
/ POST
)完整
RewriteRule ^(.*)$ https://%{SERVER_NAME}/$1 [R=308,L]
尽管如此,您应该使用307
进行测试,直到一切正常。有关详细信息,请参阅此答案Tips for debugging .htaccess rewrite rules。