这是我的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}}&id={toLower:{R:2}}&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
服务器运行,我很确定正则表达式是正确的,但规则永远不会被触发。我从未被重定向到谷歌,即使我使用上述输入。
为什么没有触发规则?
答案 0 :(得分:1)
我得到了它的工作。还要检查用户代理。 我用它来重定向网络抓取工具。
<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}}&id={toLower:{R:2}}&title={toLower:{R:3}}" appendQueryString="false" />
</rule>
答案 1 :(得分:0)
您将转义“/”以匹配您的不同输入。新的正则表达式是:
([0-9a-zA-Z]+)\/([0-9a-zA-Z]+)\/([0-9a-zA-Z-]+)
您可以在https://regex101.com上进行测试。 它匹配您的两个不同输入。