我已经习惯了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>
答案 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 Directory
(Right click website -> Properties -> Home Directory
)设置为WebPages
。然后将虚拟目录创建到资源文件夹。
答案 4 :(得分:0)
根据Giovanni的answer,您应该对所有服务器端控制子属性使用'〜'语法。代字号(〜)将解析为Web应用程序根目录。
但是,对于非服务器控件属性(stylesheet-link's,a-href,img-src等),您必须使用相对路径。
为了保持一致性,您可以考虑使用自定义HttpHandler实现来解析非服务器控件内容中的“〜”路径。周围可能有一些examples。