Хорошо, поэтому мне пришла в голову блестящая идея запустить W2012 IIS8 с правилами перезаписи, чтобы сделать для меня обратное проксирование, не потому, что это лучший выбор, а потому, что я не хотел, чтобы еще один ящик решал еще одну проблему.
Мне удалось все это запустить очень красиво с двумя подкаталогами, связанными с двумя внутренними серверами Linux, и все исходящие теги, казалось, были переписаны, как и должно быть. Пока я не попытался войти в систему и не понял, что он пропускает некоторые поля формы.
После долгой ночи мне удалось выяснить, что заставило механизм перезаписи не обрабатывать формы в этом случае, и это больше было связано с атрибутами, в которых был дефис или подчеркивание. Формы, которые создавали мои сайты Linux, содержали строку
<form accept-charset="UTF-8" action="/login" ...
который, конечно, содержит атрибут с дефисом.
Итак, я решил решить эту проблему и придумал следующее:
/test/default.htm
<html>
<a href="/ahrefpage.htm">This ahref has no dummy attribute</a> </br>
<a dummy="x" href="/ahrefpage.htm">This ahref has a dummy attribute</a> </br>
<a dum-my="x" href="/ahrefpage.htm">This ahref has a hyphen dummy attribute</a> </br>
<a dum_my="x" href="/ahrefpage.htm">This ahref has an underscore dummy attribute</a> </br>
</html>
со следующим web.config
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<outboundRules>
<rule name="OutboundRewriteTestPage" preCondition="isHtml" enabled="true">
<match filterByTags="A, Area, Base, Form, Frame, Head, IFrame, Img, Input, Link, Script" customTags="" pattern="^/(.*)" />
<action type="Rewrite" value="/test/{R:1}" />
</rule>
<preConditions>
<preCondition name="isHtml">
<add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
</preCondition>
</preConditions>
<customTags>
</customTags>
</outboundRules>
</rewrite>
<urlCompression doStaticCompression="false" doDynamicCompression="false" />
</system.webServer>
</configuration>
Итак, получившаяся страница была такой
This ahref has no dummy attribute https://portal.xx.com/test/ahrefpage.htm
This ahref has a dummy attribute https://portal.xx.com/test/ahrefpage.htm
This ahref has a hyphen dummy attribute https://portal.xx.com/ahrefpage.htm
This ahref has a underscore dummy attribute https://portal.xx.com/ahrefpage.htm
Итак, в основном вопрос в том, является ли это еще одной плохой реализацией MS технологии, которая хорошо работает в Linux, или я что-то пропустил? Есть ли обходной путь - за исключением изменения исходного материала, которое противоречит цели.
Спасибо, Chris.J