我正在使用我的.htaccess
文件在我的网站上强制使用https。这就是我的.htaccess
文件的样子:
# SSL only
RewriteCond %{HTTP:X-Forwarded-Proto} !^https
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [NC,R=301,L]
我使用DOMPDF渲染pdf,但使用https失败。所以,我想在每个页上强制https,除了对pdf文件的请求。如果使用https对pdf文件发出请求,则应将其重定向到仅http。
关于这个问题的几个SO线程,我到目前为止已经有了这个,但是它还没有完成。
# SSL only for all pages except pdf requests
RewriteCond %{HTTP:X-Forwarded-Proto} !^https
RewriteCond %{REQUEST_URI} !^\/listing\/pdf\/(.*)
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [NC,R=301,L]
RewriteCond %{HTTP:X-Forwarded-Proto} ^https
RewriteCond %{REQUEST_URI} !^\/listing\/pdf\/(.*)
RewriteRule (.*) http://%{HTTP_HOST}/$1 [L,R=301]
我想强制对/listing/pdf?listingId=123
发出的任何请求仅为http。
感谢您的任何建议!
答案 0 :(得分:0)
这应该适合你:
# SSL only for all pages except pdf requests
RewriteCond %{HTTP:X-Forwarded-Proto} !=https
RewriteCond %{REQUEST_URI} !=/listing/pdf
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [NE,R=301,L]
RewriteCond %{HTTP:X-Forwarded-Proto} =https
RewriteRule ^listing/pdf$ http://%{HTTP_HOST}%{REQUEST_URI} [NE,R=301,L]
在测试之前不要忘记清除浏览器缓存,因为之前的尝试可能会被缓存。
<强>更新强>
如果您不在反向代理之后,请尝试此操作:
# SSL only for all pages except pdf requests
RewriteCond %{HTTPS} !=on
RewriteCond %{REQUEST_URI} !=/listing/pdf
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [NE,R=301,L]
RewriteCond %{HTTPS} =on
RewriteRule ^listing/pdf$ http://%{HTTP_HOST}%{REQUEST_URI} [NE,R=301,L]