I'm getting a 404 during a URL redirect/rewrite, and I'm unable to pin down exactly what's causing it.
The warning is:
REWRITE_DISABLED_KERNEL_CACHE
Here are my rules:
<rule name="TFS Redirect" stopProcessing="true">
<match url="^((?!tfs).)*$" />
<conditions>
<add input="{HTTP_HOST}" pattern="tfs.domain.com" />
</conditions>
<action type="Redirect" url="http://tfs.domain.com/tfs" />
</rule>
<rule name="TFS Rewrite" stopProcessing="true">
<match url="^tfs(.*)" />
<action type="Rewrite" url="http://server3:8080/{R:0}" />
</rule>
The redirect rule seems to be working, as I get tfs.domain.com/tfs
in my browser when I browse to tfs.domain.com
.
But then I get the 404. I've looked at the Failed Request logs, but they're not revealing much. There's this question, but I'm afraid I'm at an absolute loss as to what the discussion means. Maybe that's the solution to my problem, but I have no idea what they're talking about. It's far over my head, unfortunately.
So... is the ARR warning causing the 404? If not, how can I get to the root cause of this problem?
Compact View
No. EventName Details Time --- ------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------- 1. GENERAL_REQUEST_START SiteId="1", AppPoolId="DefaultAppPool", ConnId="1610612761", RawConnId="0", RequestURL="http://tfs.domain.com:80/favicon.ico", RequestVerb="GET" 01:03:35.718 2. GENERAL_SET_REQUEST_HEADER HeaderName="AspFilterSessionId", HeaderValue="", Replace="true" 01:03:35.718 3. GENERAL_ENDPOINT_INFORMATION RemoteAddress="192.168.0.1", RemotePort="54278", LocalAddress="192.168.0.12", LocalPort="80" 01:03:35.718 4. GENERAL_REQUEST_HEADERS Headers="Cache-Control: no-cache 01:03:35.718 Connection: keep-alive Pragma: no-cache Accept: image/webp,image/*,*/*;q=0.8 Accept-Encoding: gzip, deflate, sdch Accept-Language: en-US,en;q=0.8 Host: tfs.domain.com Referer: http://tfs.domain.com/tfs User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 DNT: 1 " 5. GENERAL_GET_URL_METADATA PhysicalPath="", AccessPerms="513" 01:03:35.718 6. HANDLER_CHANGED OldHandlerName="", NewHandlerName="StaticFile", NewHandlerModules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule", NewHandlerScriptProcessor="", NewHandlerType="" 01:03:35.718 7. MODULE_PRECONDITION_NOT_MATCH Name="UrlRoutingModule-4.0", Precondition="managedHandler,runtimeVersionv4.0" 01:03:35.718 8. MODULE_PRECONDITION_NOT_MATCH Name="ScriptModule-4.0", Precondition="managedHandler,runtimeVersionv4.0" 01:03:35.718 9. MODULE_PRECONDITION_NOT_MATCH Name="OutputCache", Precondition="managedHandler" 01:03:35.718 10. MODULE_PRECONDITION_NOT_MATCH Name="Session", Precondition="managedHandler" 01:03:35.718 11. MODULE_PRECONDITION_NOT_MATCH Name="WindowsAuthentication", Precondition="managedHandler" 01:03:35.718 12. MODULE_PRECONDITION_NOT_MATCH Name="FormsAuthentication", Precondition="managedHandler" 01:03:35.718 13. MODULE_PRECONDITION_NOT_MATCH Name="DefaultAuthentication", Precondition="managedHandler" 01:03:35.718 14. MODULE_PRECONDITION_NOT_MATCH Name="RoleManager", Precondition="managedHandler" 01:03:35.718 15. MODULE_PRECONDITION_NOT_MATCH Name="UrlAuthorization", Precondition="managedHandler" 01:03:35.718 16. MODULE_PRECONDITION_NOT_MATCH Name="FileAuthorization", Precondition="managedHandler" 01:03:35.718 17. MODULE_PRECONDITION_NOT_MATCH Name="AnonymousIdentification", Precondition="managedHandler" 01:03:35.718 18. MODULE_PRECONDITION_NOT_MATCH Name="Profile", Precondition="managedHandler" 01:03:35.718 19. MODULE_PRECONDITION_NOT_MATCH Name="UrlMappingsModule", Precondition="managedHandler" 01:03:35.718 20. MODULE_PRECONDITION_NOT_MATCH Name="ServiceModel-4.0", Precondition="managedHandler,runtimeVersionv4.0" 01:03:35.718 21. URL_REWRITE_START RequestURL="/favicon.ico", Scope="Distributed", Type="Inbound" 01:03:35.718 22. RULE_EVALUATION_START RuleName="TFS Redirect", RequestURL="favicon.ico", QueryString="", PatternSyntax="Regex", StopProcessing="true", RelativePath="/" 01:03:35.718 23. PATTERN_MATCH Pattern="^((?!tfs).)*$", Input="favicon.ico", Negate="false", Matched="true" 01:03:35.718 24. CONDITIONS_EVALUATION_START LogicalGrouping="MatchAll" 01:03:35.718 25. CONDITION_EVALUATION Input="{HTTP_HOST}", ExpandedInput="tfs.domain.com", MatchType="Pattern", Pattern="tfs.domain.com", Negate="false", Succeeded="true" 01:03:35.718 26. CONDITIONS_EVALUATION_END Succeeded="true" 01:03:35.718 27. REDIRECT_ACTION Substitution="https://tfs.domain.com/tfs", RedirectURL="https://tfs.domain.com/tfs", AppendQueryString="true", RedirectType="Permanent" 01:03:35.718 28. RULE_EVALUATION_END RuleName="TFS Redirect", RequestURL="https://tfs.domain.com/tfs", QueryString="", StopProcessing="true", Succeeded="true" 01:03:35.718 29. REWRITE_DISABLED_KERNEL_CACHE 01:03:35.718 Warning 30. GENERAL_SET_RESPONSE_HEADER HeaderName="Location", HeaderValue="https://tfs.domain.com/tfs", Replace="true" 01:03:35.718 31. URL_REWRITE_END RequestURL="https://tfs.domain.com/tfs" 01:03:35.718 32. GENERAL_SET_RESPONSE_HEADER HeaderName="X-Powered-By", HeaderValue="ASP.NET", Replace="false" 01:03:35.718 33. GENERAL_NOT_SEND_CUSTOM_ERROR Reason="SETSTATUS_SUCCESS" 01:03:35.718 34. GENERAL_FLUSH_RESPONSE_START 01:03:35.718 35. GENERAL_RESPONSE_HEADERS Headers="Content-Type: text/html; charset=UTF-8 01:03:35.718 Location: https://tfs.domain.com/tfs Server: Microsoft-IIS/10.0 X-Powered-By: ASP.NET " 36. GENERAL_RESPONSE_ENTITY_BUFFER Buffer="<head><title>Document Moved</title></head> 01:03:35.718 <body><h1>Object Moved</h1>This document may be found <a HREF="https://tfs.domain.com/tfs">here</a></body>" 37. GENERAL_FLUSH_RESPONSE_END BytesSent="370", ErrorCode="The operation completed successfully. 01:03:35.718 (0x0)" 38. GENERAL_REQUEST_END BytesSent="370", BytesReceived="400", HttpStatus="301", HttpSubStatus="0" 01:03:35.718
All your rules look OK.
It seems like you need to enable ARR's proxy forwarding feature which is disabled by default,
REWRITE_DISABLED_KERNEL_CACHE
also gives a clue about it.To enable proxy forwarding; open an elevated command prompt on the server and enter the following command.
Or have a look at Creating a Forward Proxy Using Application Request Routing.