Добавление атрибута в тег HTML с помощью правила исходящего трафика модуля IIS Url Rewrite

Мне необходимо добавить атрибут rel="nofollow" ко всем тегам <a>, значение атрибута href которых соответствует определенному шаблону.

Я думал, что это можно сделать с помощью модуля IIS Url Rewrite, используя исходящее правило с изменением настраиваемого тега, чтобы присвоить значение атрибуту rel. Правило могло бы выглядеть примерно так:

<rule name="Shop url rewrite" preCondition="ResponseIsHtml">
    <match filterByTags="CustomTags" customTags="Anchor rel attribute" pattern="^$" />
    <action type="Rewrite" value="nofollow" />
</rule>
<preConditions>
    <preCondition name="ResponseIsHtml">
        <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
    </preCondition>
</preConditions>
<customTags>
    <tags name="Anchor rel attribute">
        <tag name="a" attribute="rel" />
    </tags>
</customTags>

Однако, поскольку существующие теги не имеют атрибута rel, правилу не с чем сопоставляться, поэтому ничего не происходит.

Кто-нибудь знает, можно ли с помощью этой техники добавить в тег несуществующий атрибут?


person Jason    schedule 29.01.2014    source источник


Ответы (1)


Есть сложный способ заархивировать эту цель, используя правило, подобное приведенному ниже,

<outboundRules>
        <rule name="outbound" stopProcessing="true">
            <match filterByTags="A" pattern="(.*)" />
            <action type="Rewrite" value="{R:1}&quot; ref=&quot;nofollow" />
        </rule>
    </outboundRules>
person aaron cheung    schedule 29.01.2014
comment
Вышеупомянутое работает, если вы вставляете его непосредственно в файл конфигурации, однако, если вы хотите использовать IDE или использовать PowerShell для добавления значения, это не сработает, потому что амперсанд в сам по себе экранирован, что делает значение бессмысленным. Я обнаружил, что в Powershell можно использовать двойные кавычки, если само значение находится в одинарных кавычках. например Set-WebConfigurationProperty -pspath 'MACHINE / WEBROOT / APPHOST' -filter system.webServer / rewrite / outboundRules / rule [@ name = 'My rule'] / action -name value -value '{R: 0} style = border: solid 10px красный; ' - person CarlR; 01.05.2015