Staffan Bruun Ответов: 1

Asp.net: как сделать отдельно скинутую версию в подпапке?


Я делаю OEM ободранную версию нашего ASP.NET сайт для клиента. Мне нужно сделать подпапку в текущей архитектуре похожей на наш основной сайт, за исключением того, что страницы перекрашены разными изображениями.

Веб-сайт использует одну главную страницу для макета, поэтому я полагаю, что смогу справиться со всеми скинами там, если смогу перенаправить все запросы в подпапку на соответствующую ей страницу в основной иерархии. Затем код главной страницы может проверить исходный URL-адрес и соответствующим образом настроить изображения.

Вот так:

http://my.website.com/OEM/page.aspx

было бы точно так же

http://my.website.com/page.aspx

но с разными образами.

Что я уже пробовал:

Я создал Default. aspx в подпапке, а в коде-позади я вызываю сервер.Перемещение(). Это, кажется, работает для главной страницы, но я получаю ошибку 404, когда пытаюсь получить доступ к любым другим страницам.

Теперь мне слишком лень создавать файл для каждой страницы веб-сайта, поэтому я задаюсь вопросом, есть ли способ настроить папку так, чтобы каждый запрос направлялся в /OEM/* в /OEM/Default.aspx, или даже чтобы все запросы автоматически передавались в другую папку.

Обратите внимание, что я не хотел бы использовать HTTP-редиректы; передача должна происходить только на стороне сервера.

Mehdi Gholam

Почему бы не создать новый домен (т. е. http://oem.website.com) в другую папку с измененным сайтом?

1 Ответов

Рейтинг:
7

Richard Deeming

Похоже, тебе это нужно. Переписать URL-адрес[^] модуль.

<system.webServer>
    <rewrite>
        <rules>
            <rule name="Site Skin">
                <match url="^(OEM)/([^?]*)(.*)$" />
                <action type="Rewrite" url="{R:2}?_skin={R:1}" appendQueryString="true" />
            </rule>
        </rules>
    </rewrite>
</system.webServer>

Это приведет к перенаправлению oem/anyPage.aspx?query к anyPage.aspx?_skin=oem&query; затем вы можете использовать _skin запрос-строковая переменная, чтобы решить, какой скин использовать.

Расширение его на другие папки так же просто, как добавление другого значения к <match> элемент:
<match url="^(OEM|OEM2|Another)/([^?]*)(.*)$" />