繁体   English   中英

不会触发基于正则表达式的IIS / web.config url重定向规则

[英]IIS / web.config url redirect rule based on regex is not triggered

这是我的web.config规则

    <rule name="spiderRedirect" stopProcessing="true">
        <match url=".post/([0-9a-zA-Z]+)/([0-9a-zA-Z]+)/([0-9a-zA-Z-]+)" />
        <action type="Redirect" url="https://example.net/bot/post.php?category={toLower:{R:1}}&amp;id={toLower:{R:2}}&amp;title={toLower:{R:3}}" appendQueryString="false" />
    </rule>

这应该得到这个结果

输入:

https://example.net/post/celebrity/4cHYQ7i/maisie-williams

应导致:

{R1}: celebrity
{R2}: 4cHYQ7i
{R3}: maisie-williams

它应该重定向到:

https://example.net/bot/post.php?category=celebrity&id=4cHYQ7i&title=maisie-williams

此输入:

https://example.net/post/nerdy/NE5cHQZ/when-i-have-to-do-technical-support

应导致:

{R1}: nerdy
{R2}: NE5cHQZ
{R3}: when-i-have-to-do-technical-support

服务器运行,我非常确定正则表达式是正确的,但是规则永远不会触发。 即使使用上述输入,我也永远不会重定向到Google。

为什么不触发规则?

我知道了 还要检查用户代理。 我用它来重定向网络爬虫。

    <rule name="spiderRedirect" stopProcessing="true">
      <match url=".?post/([0-9a-zA-Z]+)/([0-9a-zA-Z]+)/([0-9a-zA-Z-]+)" />
      <conditions>
        <add input="{HTTP_USER_AGENT}" pattern="(Google|MSNBot|Twitterbot|Pinterest|Facebot|facebookexternalhit|MJ12bot|bingbot|SimplePie|SiteLockSpider|okhttp|curl|YandexBot|ScoutJet|Slurp|DuckDuckBot|Baiduspider|Sogou|Konqueror|Exabot|ia_archiver|Screaming)"/>
        <add input="{HTTPS}" pattern="on"/>
      </conditions>
      <action type="Redirect" url="https://example.net/bot/post.php?category={toLower:{R:1}}&amp;id={toLower:{R:2}}&amp;title={toLower:{R:3}}" appendQueryString="false" />
    </rule>

您将转义“ /”以匹配您的不同输入。 新的正则表达式为:

([0-9a-zA-Z]+)\/([0-9a-zA-Z]+)\/([0-9a-zA-Z-]+)

您可以在https://regex101.com上对其进行测试。 它适合您两个不同的输入。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM