大约一周前,我问了一个关于在VPS上运行2个不同app / web服务器的问题,但是使用了一个主要的传入URL /端口(仅使用site.com而不需要site.com:8080)。
我收到了答案,并且大部分都使解决方案有效。我需要使用URL重写,并在此过程中为重写创建入站和出站规则。
当我有一个值为URL的CSS属性是相对的时,这可以完美地运行。例如:
.rule{
background-image: url(/images/picture.jpg);
}
我目前的入站和出站规则如下
<rewrite>
<rules>
<rule name="ReverseProxyInboundRule1" stopProcessing="true">
<match url="java/(.*)" />
<action type="Rewrite" url="http://s17857763.onlinehome-server.com:8080/{R:1}" />
</rule>
</rules>
<outboundRules>
<rule name="RewriteRelative" preCondition="IsHtml" enabled="false" stopProcessing="true">
<match filterByTags="A, Area, Base, Form, Frame, Head, IFrame, Img, Input, Link, Script" pattern="/(.*)" />
<action type="Rewrite" value="/java/{R:1}" />
</rule>
<rule name="RewriteAbsolute" preCondition="IsHtml" enabled="false">
<match filterByTags="A, Area, Base, Form, Head, IFrame, Img, Input, Link, Script" pattern="http(s)?://s17857763\.com/(.*)" />
<action type="Rewrite" value="/java/{R:2}" />
</rule>
<preConditions>
<preCondition name="IsHtml">
<add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
<add input="{URL}" pattern=".*/java/.*" />
</preCondition>
</preConditions>
</outboundRules>
</rewrite>
如果您希望看到我遇到的问题,请打开您的开发控制台,转到http://s17857763.onlinehome-server.com/java/FirstMaven/
由于出站规则,它加载正常的CSS和JS链接很好,因为它们来自HTML标签....但我不知道是否可以修复CSS url()路径。
答案 0 :(得分:0)
可能你忘记了引号
试试这个
.rule{
background-image: url("/images/picture.jpg");
}
答案 1 :(得分:0)
您的部分问题将成为preCondition规则。您将其限制为仅限HTML。对于CSS,您要么为&#34; ^ text / css&#34;添加先决条件。另一个用于&#34; ^ application / javascript&#34;或完全取消前提条件。我倾向于做第一个选择。它允许更细粒度的控制。我现在正在做同样的事情,这就是我找到这个页面的方式。如果我弄清楚了,我会发布我在这里所做的事情。
答案 2 :(得分:0)
好的,所以我完成了CSS重写和工作。在前提条件下,我添加了以下内容:
<preCondition name="IsCSS">
<add input="{RESPONSE_CONTENT_TYPE}" pattern="^/text/css" />
</preCondition>
然后,在我的outBoundRules部分,我添加了以下内容:
<rule name="RewriteCSSRelativePaths" preCondition="IsCSS">
<match filterByTags="None" pattern="url\('" />
<action type="Rewrite" value="url('/<path>/" />
</rule>
我的模式只是寻找 url('。如果你想要更多的控制权,请调整模式以便相应地查找。注意(在我的模式中。我不得不逃避(因为()在正则表达式捕获数据中,我不想这样做。在我的情况下,我只想调整路径以通过我们的软件代理。