Веб-приложение .net изменить корневой каталог - PullRequest
0 голосов
/ 24 марта 2011

Я привык к Apache / PHP, где я мог указать для данного домена, где искать исходный файл index.php.

Я делаю проект в .Net, где у меня есть каталогструктурировать что-то ссылка

ApplicationName / Content / -> Изображения и тому подобное / Scripts / / WebPages /

Когда я запускаю приложение, оно дает мне указанную выше структуру каталогов, но фактическое начальное местодля веб-сайта находится в каталоге WebPages, страница default.aspx.

Я не осознавал, что это проблема, пока не начал связывать страницы вместе и не понял, что не хочу включать каталог / WebPages / в URL obv.somedomain.com/WebPages/somepasge.aspx.

Исходя из Apache, я ищу способ сообщить .Net, где находится корневая папка для реального веб-каталога, что будет учитываться для относительных ссылок.Я мог бы переместить все свои файлы в каталог / WebPagse /, но я бы предпочел хранить их отдельно, чтобы сделать структуру каталогов приятной, а мой OCD - в страхе.

Сводка

Пример текущей страницы ...

example_domain.com / WebPages / SubDirectory / Subpage.aspx

В идеале было бы связано через ...

<a href='/SubDirectory/Subpage.aspx'>Some page</a>

Ответы [ 5 ]

2 голосов
/ 11 октября 2016

Корень моих сайтов находится в подпапке www (где index.html). Чтобы установить корневой каталог на www, вы можете добавить следующее в ваш файл Web.config

<configuration>
    <system.web>
        ...
        <urlMappings enabled="true">
             <add url="~/" mappedUrl="~/www/index.html" />
        </urlMappings>
    </system.web>
    ...
    <system.webServer>
        ...
        <rewrite>
          <rules>
            <rule name="Redirect everything to root" stopProcessing="true">
              <match url=".*" />
              <conditions logicalGrouping="MatchAll">
                <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
              </conditions>
              <action type="Rewrite" url="/www/{R:0}" />
            </rule>
          </rules>
        </rewrite>
    </system.webServer>
    ...
</configuration>
1 голос
/ 24 марта 2011

Для управления на стороне сервера вы можете использовать тильду "~" для разрешения корня.Для не серверных элементов управления это просто простые XML-пути (например, "../").

Так что для образа на стороне клиента вам необходимо знать, где вы находитесь, например:

<int src="../Content/Images/image1.jpg"/>

для изображения на стороне сервера:

<asp:Image ID="Image1" runat="server" ImageUrl="~/Content/Images/image1.jpg"/>

РЕДАКТИРОВАТЬ

Я неправильно понял вопрос в первый раз, хотя я оставлю вышеупомянутое, если оно кому-нибудь поможет.

Вы можете выполнить то, что ищете, с помощью Перезапись URL .Это новое для веб-форм ASP.NET (версия 4), которое используется в ASP.NET MVC с версии 1.

Обратите внимание, что если вы используете более старую версию ASP.NET, вы все равно можете использовать URLпереписать, но не с версией, запеченной в .NET 4.

В вашем случае вы можете по существу сопоставить в "/WebPages/*.aspx", выяснить подкаталоги и страницу, а затем переписать оттуда.

Совет

Если вы собираетесь пойти по пути перезаписи, я предлагаю вам просто придумать более хорошие пути (без расширения .aspx, без строки запросапараметры и т. д.).

0 голосов
/ 24 марта 2011

Согласно ответу Джованни , вы должны использовать синтаксис '~' для всех под-свойств элемента управления на стороне сервера.Тильда (~) преобразуется в корень веб-приложения.

Однако для несерверных свойств управления (ссылки на таблицы стилей, a-href, img-src и т. Д.) Вам придется использовать относительные пути.1005 *

Для согласованности вы можете рассмотреть пользовательскую реализацию HttpHandler , чтобы исключить пути '~' из несерверного содержимого управления.Вероятно, есть несколько примеров вокруг.

0 голосов
/ 24 марта 2011

Если вы используете IIS, тогда установите Home Directory (Right click website -> Properties -> Home Directory) веб-сайта на WebPages.Затем создайте виртуальные каталоги для ваших папок ресурсов.

0 голосов
/ 24 марта 2011

Полагаю, вам нужно поместить тильду перед вашими ссылками, например ...

"~ / subdirectory / subpage.aspx"

, что означает, что она начнется свиртуальный каталог.

...