Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 除了一条路径外,我如何使用.htaccess强制SSL_Apache_.htaccess_Mod Rewrite - Fatal编程技术网

Apache 除了一条路径外,我如何使用.htaccess强制SSL

Apache 除了一条路径外,我如何使用.htaccess强制SSL,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,我正在使用我的.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文件的请求。如果对pdf文件的请

我正在使用我的
.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文件的请求。如果对pdf文件的请求是使用https发出的,则应仅将其重定向到http

看看关于这个的一些线索,到目前为止,我已经有了这个,但是它不太有效

# 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


谢谢你的建议

这应该能帮到你:

# 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]

这应该可以为您做到:

# 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]

非常感谢。我想这已经很接近了——我再也不能得到一致的500了——但是当我点击pdf的链接时,它仍然是https格式的。我的站点将始终是https,因此每当单击该链接时,我需要将301转换为http。您是否使用反向代理?我假设是这样,因为您正在检查
X-Forwarded-Proto
,但这只适用于有反向代理处理HTTPS终止的情况?这是一个很好的问题-我不知道我是不是。这是我奋斗的110%。这远远超过我的技术水平。我从我的主机上的知识库开始,添加了一个更新来尝试,这是一个没有反向代理进行HTTPS终止的设置。看看这对你是否有效。我对你的帮助感激不尽。我尝试了最底层的版本,但得到了一个“太多重定向”错误。我仍然无法使顶级版本正常工作。我相信我正在使用代理。“HTTPS代理、负载平衡器或CDN背后的Web应用程序”是我在文档中找到的。IDK为什么我的系统如此顽固。谢谢!我想这已经很接近了——我再也不能得到一致的500了——但是当我点击pdf的链接时,它仍然是https格式的。我的站点将始终是https,因此每当单击该链接时,我需要将301转换为http。您是否使用反向代理?我假设是这样,因为您正在检查
X-Forwarded-Proto
,但这只适用于有反向代理处理HTTPS终止的情况?这是一个很好的问题-我不知道我是不是。这是我奋斗的110%。这远远超过我的技术水平。我从我的主机上的知识库开始,添加了一个更新来尝试,这是一个没有反向代理进行HTTPS终止的设置。看看这对你是否有效。我对你的帮助感激不尽。我尝试了最底层的版本,但得到了一个“太多重定向”错误。我仍然无法使顶级版本正常工作。我相信我正在使用代理。“HTTPS代理、负载平衡器或CDN背后的Web应用程序”是我在文档中找到的。IDK为什么我的系统如此顽固。