Question: ARR Reverse Proxy Setup

I have ARR setup in IIS under an web application with a virtual directory called “FTS”. This way, all traffic for Fess should go through FTS. E.g. Selecting a filesystem index from the list, gets redirected to to This should start with I can manually modify the url to go to the expected path.

Do you have any thoughts on this or suggestions?

The below configuration is what I am using.

  1. Rewrite CSS/JS/Images/Links to include a base address

  2. Change logout urls to append /fts to beginning. This is because logout would redirect to

  3. Change login urls to append /fts to beginning. This is because logout would redirect to

  4. Change admin urls to append /fts to beginning. This because on login it would redirect to

  5. Reverse proxy from localhost:8080 to new address

Updated with data-href for admin. Requires UrlRewrite 2.1

<?xml version="1.0" encoding="UTF-8"?>
                <clear />

		<rule name="ChangeAdmin">
                    <match serverVariable="RESPONSE_LOCATION" pattern="/admin(.*)" />
                    <action type="Rewrite" value="/fts{R:0}" />
		<rule name="ChangeLogout">
                    <match serverVariable="RESPONSE_LOCATION" pattern="/logout(.*)" />
                    <action type="Rewrite" value="/fts{R:0}" />
		<rule name="ChangeLogin">
                    <match serverVariable="RESPONSE_LOCATION" pattern="/login(.*)" />
                    <action type="Rewrite" value="/fts{R:0}" />
		<rule name="ChangeGo">
                    <match serverVariable="RESPONSE_LOCATION" pattern="/go(.*)" />
                    <action type="Rewrite" value="/fts{R:0}" />
		<rule name="ReverseProxyOutboundRule1" preCondition="ResponseIsHtml1">
                    <match filterByTags="A, Area, Base, Form, Frame, Head, IFrame, Img, Input, Link, Script, CustomTags" customTags="dataHref" pattern="^/(.*)" />
                    <conditions logicalGrouping="MatchAll" trackAllCaptures="true" />
                    <action type="Rewrite" value="{R:1}" />
                    <preCondition name="ResponseIsHtml1">
                        <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
                    <tags name="dataHref">
                        <tag name="tr" attribute="data-href" />
                <clear />
                <rule name="ReverseProxyInboundRule1" stopProcessing="true">
                    <match url="(.*)" />
                    <conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
                    <action type="Rewrite" url="http://localhost:8080/{R:1}" />
        <urlCompression doStaticCompression="false" doDynamicCompression="false" />

I think that rewriting Location response header is failed in your reverse proxy setting.

For the /go/, I think the problem is that since the url is generated in javascript, it doesn’t have a chance to write it to /fts/go. The rules are on the web.config of the FTS folder, not the main application. I could add rules to the main application, but for /admin/ would interfere with the main applications /admin/

For the /admin/, may be because you use tr data-href and need to add a custom tag, but have to update urlrewrite due to bug in the current installation for handling attributes with hyphen.

I fixed /admin/ when selecting the items by updating UrlRewrite to 2.1, and adding the additional FilterByTag. Looking into /go/.

any way to disable click tracking /go/? Ive tried rewrites and redirects from both /fts/ folder and main application folder, and so far nothing is working.

To disable a click logging, remove link class of a tag in searchResults.jsp.

cool. its a manageable solution. Closing.