首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >同一个URL中的多个重写规则

同一个URL中的多个重写规则
EN

Stack Overflow用户
提问于 2020-07-24 04:25:26
回答 1查看 61关注 0票数 0

我的重写规则如下,但我不明白为什么我的第二条规则不起作用。当我禁用第一个,它将正常工作。如果两个规则的url完全相同,是否有限制?请注意,在我的第一个条件下,如果百度蜘蛛爬行我们的网站,我将尝试将请求映射到NuxtJS,否则只需在the根目录上提供静态HTML文件即可。

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<rules>
    <clear />
    <rule name="ReverseProxyInboundRule1" enabled="true" stopProcessing="false">
        <match url="(.*)" />
        <action type="Rewrite" url="http://localhost:3000/{R:1}" />
        <conditions>
            <add input="{HTTP_USER_AGENT}" pattern="^((?Baidu).)*$" />
        </conditions>
    </rule>
    <rule name="StaticHTMLForBaiduCrawler" enabled="true" stopProcessing="false">
        <match url="(.*)" />
        <conditions>
            <add input="{HTTP_USER_AGENT}" pattern="^((?!Baidu).)*$" />
        </conditions>
        <action type="Rewrite" url="{R:1}/index.html" />
    </rule>
</rules>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-24 05:00:51

没有这样的限制。

您的第一个模式在语法上无效,因此会发生错误。

表达式"^((?Baidu).)*$“的语法无效。

因为您不需要精确匹配,所以像Baidu这样的简单模式就能奏效。看看下面的规则,并注意negate="true"

代码语言:javascript
复制
<rules>
    <clear />
    <rule name="ReverseProxyInboundRule1" enabled="true" stopProcessing="true">
        <match url="(.*)" />
        <action type="Rewrite" url="http://localhost:3000/{R:1}" />
        <conditions>
            <!-- if user agent contains Baidu -->
            <add input="{HTTP_USER_AGENT}" pattern="Baidu" />
        </conditions>
    </rule>
    <rule name="StaticHTMLForBaiduCrawler" enabled="true" stopProcessing="true">
        <match url="(.*)" />
        <conditions>
            <!-- if user agent does not contain Baidu -->
            <add input="{HTTP_USER_AGENT}" pattern="Baidu" negate="true" />
        </conditions>
        <action type="Rewrite" url="{R:1}/index.html" />
    </rule>
</rules>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63066802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档