在我的.htaccess文件中
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
#RewriteCond %{THE_REQUEST} ^POST(.*)HTTP/(0\.9|1\.0)$ [NC]
#RewriteCond %{REQUEST_METHOD} ^(delete|head|trace|track) [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]
如果我想使用
RewriteCond %{THE_REQUEST} ^POST(.*)HTTP/(0\.9|1\.0)$ [NC]
RewriteCond %{REQUEST_METHOD} ^(delete|head|trace|track) [NC]
但如果我尝试使用这些SSL,则无法正常工作,如果我删除这两行,SSL工作正常。我怎么能解决这个问题。
答案 0 :(得分:0)
我相信你遇到的问题是它只运行一个条件并因为你没有使用[OR]
而卡住了。我也编辑了你的第一个条件。
RewriteEngine On
RewriteCond %{HTTPS} !=on [OR]
RewriteCond %{THE_REQUEST} ^POST(.*)HTTP/(0\.9|1\.0)$ [NC, OR]
RewriteCond %{REQUEST_METHOD} ^(delete|head|trace|track) [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [R,L]
确保在测试之前清除缓存。
您可以尝试编辑,首先将所有内容强制为HTTPs本身:
RewriteEngine On
RewriteCond {HTTPS} !=on
RewriteRule ^.*$ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=302,L]
我不是百分之百确定你要用第二部分实现的目标,就像你想在所有内容上强制使用HTTP一样,那么上面就没问题了。我读了你的问题标题限制,这些应该是限制吗?现在他们不是。
RewriteCond %{THE_REQUEST} ^POST(.*)HTTP/(0\.9|1\.0)$ [NC]
RewriteCond %{REQUEST_METHOD} ^(delete|head|trace|track) [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]
工作一个
RewriteEngine On
RewriteCond %{HTTPS} !=on [OR]
RewriteCond %{THE_REQUEST} ^POST(.*)HTTP/(0\.9|1\.0)$ [NC,OR]
RewriteCond %{REQUEST_METHOD} ^(delete|head|trace|track) [NC,OR]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [R,L]