url rewriting - IIS Url-Rewrite: URL won't get recognized -


i'm facing problem url-rewrite module right know.

what want achieve: have website address "test-server" right now. when url typed in want change url "test-server/de" or "test-server/en" through {http_accept_language} variable. should work on url "test-server" when user on sub-page "test-server/de/" can manually change url "test-server/en/" without getting redirected again.

this have right know:

<rewrite>                   <rules>                           <rule name="togermanpage" enabled="true" stopprocessing="true">                 <match url=".*" />                 <conditions logicalgrouping="matchall" trackallcaptures="false">                     <add input="{http_accept_language}" pattern="^de" />                     <add input="{url}" pattern=".+test-server" />                 </conditions>                 <action type="redirect" url="{r:0}/{http_accept_language}" appendquerystring="true" />             </rule>             <rule name="toenglishpage" enabled="true" stopprocessing="true">             <match url="^test-server" />                 <action type="redirect" url="http://test-server/en" />                 <conditions logicalgrouping="matchany" trackallcaptures="false">                     <add input="{http_accept_language}" pattern="^de" negate="true" />                 </conditions>             </rule>         </rules> </rewrite> 

my problem if type following: won't recognize url, same goes {url} parameter inside conditions.

looking @ rule...

<match url=".*" /> <conditions logicalgrouping="matchall" trackallcaptures="false">     <add input="{http_accept_language}" pattern="^de" />     <add input="{url}" pattern=".+test-server" /> </conditions> <action type="redirect" url="{r:0}/{http_accept_language}" appendquerystring="true" /> 

the match url .*, match resources. if want redirect work http(s)://test-server/, should specify blank resource (url="^$").

you use {http_host} instead of {url} match hostname (without worrying http/https).

also, redirect url using {r:0} match/resource url. http://test-server, match url blank, since no resource path specified. should able remove {r:0} altogether redirect url, though, since need redirect de or en. so, try this:

<match url="^$" /> <conditions>     <add input="{http_host}" pattern="^test-server$" /> </conditions> <action type="redirect" url="{http_accept_language}" appendquerystring="true" /> 

that should match http(s)://test-server , redirect either:

http(s)://test-server/en 

or

http(s)://test-server/de 

depending on value of {http_accept_language}.


Comments