我使用的是java和apache,我在我的安全页面上托pipe非安全的第三方内容,当我在Facebook上分享我的页面时,facebooks选项卡不显示不安全的内容。 我碰到一篇描述这种行为的文章,我正在寻找纠正这个问题。 https://www.tabsite.com/blog/chrome-and-other-browsers-not-showing-insecure-content/
由于我的内容提供商不提供安全的内容,我的想法是使用Apache将我的安全URL代理给第三方非安全URL。
我将如何去做我的代理dynamic,以便我不会一致地修改我的服务器映像? 我最初的想法是在我的域名之前加上第三方url
https://images.example.com?url=http://content-provider.com/image/1234.jpg
并parsing它与Apache重写或其他东西,但我不知道这是一个合适的解决scheme。 我正在寻找一些想法和build议。
我如何使用mod_rewrite重写URL到查询参数?
我试着写下面的代码,但没有成功
https://images.example.com?url=http://content-provider.com/image/1234.jpg RewriteCond %{QUERY_STRING} ^url=(.*)$ [NC] RewriteRule (.*)$ %1 [NC,L,R=301]
我希望http://content-provider.com/image/1234.jpg
要以完全通用的方式来做到这一点将是困难的。 在你的例子中,你可以改变“R = 301”标志为“P”(代理),它应该工作(如果没有使用rewritelog进行debugging)。
否则,你必须把请求URI映射到后端服务器,这可能是一个rewritemap,但这取决于你知道底层代理文件的真实位置。
一个可能(但非常简单)的解决scheme,你可以拆分服务器,并为他们分配一个字母。
ProxyPass / a / http://content-provider-a.example.com/ ProxyPass / b / http://content-provider-b.example.com/ ...
然后是一般的URIpath/ a / path / to / file / on / provider-a /等等。但是你必须事先知道所有的位置。
如果你多解释一下,那么可能会有更多的build议。
讨论后的补充信息。 首先,在mod_rewrite上有一些很好的信息: redirect,更改URL或将HTTPredirect到Apache中的HTTPS – 你想知道的关于Mod_Rewrite规则的所有内容,但不敢问
你还应该花时间学习PCRE。
使用以下作为我们的基础configuration,这里是一些解释:
RewriteMap myquery“fastdbd:SELECT externalURL FROM photo WHERE id =%s”
RewriteRule ^ / images /(.*)$ {myquery:$ 1} [P,L]
$ 1是对RewriteRule匹配的string的反引用,括号内的。*。 %s是传递给RewriteMap的参数,在这种情况下,与$ 1相同。
请注意。 Mod_rewrite并不适合那些胆小鬼。 这是非常复杂的,你应该期待花一些时间在这方面的工作。