强制mod_rewrite在重写时传递请求参数

时间:2014-11-04 20:34:28

标签: apache mod-rewrite

我正在尝试让网络服务器将所有用户从 http 重定向到 https 。这是我正在使用的代码:

RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HTTPS} !=on
RewriteRule ^(.*)$ https://%{SERVER_NAME}/$1 [R=301,L]

但是,我已经意识到,当用户最初向 http 发送包含信息的请求时,在此重写规则执行之后,POST数据似乎丢失了。

有没有办法,当重写为HTTPS时,确保也发送所有POST数据。

1 个答案:

答案 0 :(得分:2)

有两个HTTP status codes 307(临时)和308(永久),您可以将其用于此类情况。这些状态代码与302301重定向代码相同,但保持方法(GET / POST)完整

RewriteRule ^(.*)$ https://%{SERVER_NAME}/$1 [R=308,L]

尽管如此,您应该使用307进行测试,直到一切正常。有关详细信息,请参阅此答案Tips for debugging .htaccess rewrite rules