У меня есть сервер IIS, который изначально размещает статический HTML в wwwroot, но затем мы решили, что если Baidu Spider попытается сканировать, мы сопоставим трафик с нашим веб-сервером NuxtJS, работающим также рядом с сервером IIS.
Итак, мы установили ARR (Маршрутизация запросов приложений), чтобы включить обратный прокси-сервер, он работает нормально, и теперь мы попытались сначала проверить, где в Правиле перезаписи URL:
Таким образом, мы ожидаем, что если обычные пользователи запросят, тогда он будет обслуживать статический HTML в wwwroot вместо этого, поскольку он не попал в правило, а вместо этого я получил 500.
ОБРАТИТЕ ВНИМАНИЕ:
Так мне нужно создать другое правило? Я ожидал, что если он не попадет в какое-либо правило, произойдет поведение по умолчанию, для которого он просто читает в wwwroot.
ОБНОВИТЬ
<?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>
Регулярное выражение в условии в вашем первом правиле не является допустимым регулярным выражением для IIS. Если вы хотите, чтобы первое правило сработало, когда пользовательский агент содержит Baidu, а второе - когда его нет, вы можете просто сделать что-то вроде ниже. Обратите внимание на отрицание в условии во втором правиле:
<?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" negate="true" />
</conditions>
<action type="Rewrite" url="{R:1}/index.html" />
</rule>
</rules>