urlrewrite in web.config

Status
Niet open voor verdere reacties.

troedeboer

Gebruiker
Lid geworden
18 feb 2009
Berichten
441
Ik maak momenteel gebruik van een systeem dat een instelling afhankelijk is van het subdomein, bijvoorbeeld
https://www.mijnwebsite.nl/domein1/orders gaat naar de orders van domein1
https://www.mijnwebsite.nl/domein2/klanten gaat naar de klanten van domein2

Nu wil ik graag een wildcard domein gaan gebruiken, zodat ik gebruik kan maken van
https://domein1.mijnwebsite.nl en https://domein2.mijnwebsite.nl

De oude manieren wil ik graag nog wel beschikbaar houden, omdat deze nog gebruikt worden.
Hoe kan ik op IIS 8.5 in de web.config aanpassen dat er van het oude domein automatisch naar het nieuwe domein wordt gegaan?

Ik heb bijvoorbeeld geprobeerd:
Code:
<rule name="Redirect url" stopProcessing="true">
	<match url="(.*)" ignoreCase="true" />
	<conditions>
		<add input="{HTTP_HOST}" pattern="^www.mijnwebsite.nl/?$" />
	</conditions>
	<action type="Redirect" url="https://{R:0}.mijnwebsite.nl/" redirectType="Temporary" />
</rule>
dit gaat tot op zekere hoogte goed, nl dat de verwijzing
https://www.mijnwebsite.nl/domein1 wordt omgezet naar http://domein1.mijnwebsite.nl
echter als ik ga naar https://www.mijnwebsite.nl/domein1/orders
dan wordt dit omgezet naar https://domein1/orders.mijnwebsite1.nl
wat natuurlijk niet de bedoeling is (zou moeten https://domein1.mijnwebsite.nl/orders

Hoe kan ik dit in de web.config aanpassen zodat dit omgezet wordt naar zoals boven omschreven?
 
Je kan matchen tot het einde OF de eerstvolgende "/". beter is misschien om 2 groepen te gebruiken:

www.mijnwebsite.nl/(.+)/(.*)?

let op dit werkt alleen als je URL altijd eindigt met een slash (/). maak dus eerst een regel dat je URL wordt omgeschreven om altijd te eindigen met een "/"

Vervolgens gebruikt je:

{r:0}.website/{r:1}
 
Ik weet niets van de syntax in MS web.config
maar misschien kan je deze regex in jouw code verwerken.
Het splitst de url op in 4 delen die je dan weer kan smaenvoegen.

Code:
{HTTP_HOST}    ^(www\.)?(example\.nl)\/?$

{REQUEST_URI}  ^\/?(domein1|domein2)+\/?(.*)$

0 www. (als die er is)
1 example.nl
2 domeinX
3 laatste deel excl leading /

Noot: of is het in web.config 1 t/m 4?

Bij het samenvoegen
Code:
https://{R:2}.{R:1}/{R:3}
 
Laatst bewerkt:
Bedankt voor jullie input.
Volgens mij heb ik het nu werkend met twee rules:
1 voor de url met meerdere delen erachter
Code:
<rule name="Redirect url" stopProcessing="true">
	<match url="(.*)" ignoreCase="true" />
	<conditions>
		<add input="{HTTP_HOST}" pattern="^www\.mijnwebsite\.nl\/?" />
		<add input="{HTTP_URL}" pattern="^\/(.+)/(.*)" />
	</conditions>
	<action type="Redirect" url="https://{C:1}.mijnwebsite.nl/{C:2}" redirectType="Temporary" />
</rule>
1 voor de url met 1 deel
Code:
<rule name="Redirect url2" stopProcessing="true">
	<match url="(.*)" ignoreCase="true" />
	<conditions>
		<add input="{HTTP_HOST}" pattern="^www\.mijnwebsite\.nl\/?" />
		<add input="{HTTP_URL}" pattern="^\/(.+)" />
	</conditions>
	<action type="Redirect" url="https://{R:0}.mijnwebsite.nl/" redirectType="Temporary" />
</rule>
De eerste tests lijken te werken, dus ik ben er blij mee :thumb:
 
Wordt er altijd automatisch www. voorgezet, ook als iemand zonder www. naar de website gaat?
 
Goed punt, dit ga ik nog meenemen in de webconfig, dat de voorloper of 'www' of leeg moet zijn :thumb:
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan