.net web应用程序更改根目录

时间:2011-03-24 19:25:04

标签: .net web-applications

我已经习惯了Apache / PHP,我可以为给定的域指定在哪里查找最初的index.php文件。

我正在.Net中做一个项目,我的目录结构有链接

应用程序名 / Content / - >像这样的东西 /脚本/ /网页/

当我启动应用程序时,它为我提供了上述目录结构,但网站的实际起始位置在WebPages目录下,即default.aspx页面。

在我开始将页面链接在一起并意识到我不想在URL obv中包含/ WebPages /目录之前,我没有意识到这是一个问题。 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 个答案:

答案 0 :(得分:1)

对于服务器端控件,您可以使用波形符“〜”来解析根。对于非服务器控件,它只是普通的xml路径(例如“../").

因此,对于客户端图像,您需要了解自己的位置,例如:

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

用于服务器端图像:

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

修改

我第一次误解了这个问题,虽然我会留下上述内容,以防有人帮助。

您可以通过URL Rewriting完成您要找的内容。这是ASP.NET Web Forms(版本4)的新功能,自版本1以来一直使用ASP.NET MVC。

请注意,如果您使用的是旧版本的ASP.NET,您仍然可以进行URL重写,但不能使用加入.NET 4的版本。

在您的情况下,您基本上可以匹配“/WebPages/*.aspx”,找出子目录和页面,然后从那里重写。

<强>建议

如果您要沿着重写路径走下去,我建议您提出更好的路径(没有.aspx扩展名,没有查询字符串参数等)。

答案 1 :(得分:1)

我的网站的根目录位于子文件夹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>

答案 2 :(得分:0)

我猜你需要在你的链接前放一个代字号,如...

“〜/子目录/ subpage.aspx”

这意味着它将从虚拟目录开始。

答案 3 :(得分:0)

如果您使用的是IIS,请将网站的Home DirectoryRight click website -> Properties -> Home Directory)设置为WebPages。然后将虚拟目录创建到资源文件夹。

答案 4 :(得分:0)

根据Giovanni的answer,您应该对所有服务器端控制子属性使用'〜'语法。代字号(〜)将解析为Web应用程序根目录。

但是,对于非服务器控件属性(stylesheet-link's,a-href,img-src等),您必须使用相对路径。

为了保持一致性,您可以考虑使用自定义HttpHandler实现来解析非服务器控件内容中的“〜”路径。周围可能有一些examples