Разделих някои страници между поддомейни и искам да направя URL пренаписване на различни страници в различни поддомейни в определени случаи. Всичко е правило за пренаписване, с изключение на последните две правила във файла. Последните две правила определят към кой поддомейн да се насочи пътя, който фиксирах.
Начинът, по който го правя, е, че ако предваря пътя с долна черта (_), тогава той остава в поддомейн A. Ако предваря пътя с тилда (~), тогава той се пренасочва към поддомейн B.
Така че имам това правило:
<rule name="Login rule" stopProcessing="false">
<match url="(.*?)/?old-path/Login\.aspx$" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{HTTP_METHOD}" pattern="GET" />
</conditions>
<action type="Rewrite" url="~new-path/login.aspx" />
</rule>
Моля, обърнете внимание, че в края на URL адреса има aspx. Той продължава да обработва, но имам общо правило за пренаписване в края на списъка точно преди тези за пренасочване. Това е за премахване на всички ASPX разширения на поддомейн A (www), но искам да оставя разширението ASPX за поддомейн B (Моля, не предлагайте премахване на предложеното във втория поддомейн. Благодаря :)
<rule name="Remove ASPX" stopProcessing="false">
<match url="^([^www\.]+)\.aspx$" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="_{R:1}" />
</rule>
Проблемът е, че това няма да работи, защото всички URL адреси имат www в началото. Не съм толкова добър с регулярния израз, но предполагам, че трябва просто да приложа това правило към всички URL адреси, които имат тилда в себе си. Опитах това, но и то наистина не работи:
<match url="^_+\.aspx$" />
По принцип искам това правило да игнорира URL адреси, които съм пренаписал, за да има ~
в тях, но да премахне ASPX, ако съм поставил _
в началото на пътя.
Някакви предположения?