0

这个标题不是很具有描述性,但我不知道如何很好地表达我的问题。我想要做的是使用单个页面来解释多个 URL。这是一个例子:[domain]/name-of-question.aspx显然不是站点服务器上的文件,但服务器的行为就像它一样。这种行为使页面更具可读性并且更容易添加书签。我对解决方案的愿景是能够将请求重定向到某个目录到特定页面,同时将请求的页面名称作为 URL 参数附加到页面。这就是我的意思:[domain]/questions/name-of-question重定向到[domain]/question.aspx?page=name-of-question. 我认为这就是 reddit 自己发帖的方式,但他们不使用 ASP.Net 或 IIS。

这是可能的,如果是这样,人们将如何实现这种行为?如果有什么代码,请用C#写,因为我对VB.Net不是很了解。谢谢!

4

2 回答 2

3

您需要使用 URL 重写来完成此操作。

您必须创建一个重写规则,将任何对 [domain]/questions/{1} 的请求重写为 [domain]/question.aspx?{1}

在 ASP.NET 中,您有 URL 重写器模块:http ://www.iis.net/downloads/microsoft/url-rewrite

该规则可能与此类似,并在 web.config 文件中应用:

       <rewrite>
        <rules>
            <rule name="RewriteUserFriendlyURL1" stopProcessing="true">
                <match url="questions/(.*)" />
                <conditions>
                    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                </conditions>
                <action type="Rewrite" url="question.aspx?{R:1}" />
                <serverVariables>
                    <set name="{RESPONSE_CONTENT_TYPE}" value="image/png" />
                </serverVariables>
            </rule>
        </rules>
    </rewrite>

编辑:要更改内容类型,请在重写规则中添加 serverVariables 部分并授权在 IIS 管理器中设置该变量:

服务器变量 允许服务器变量

于 2013-06-16T22:29:15.003 回答
0

如果您使用的是 ASP.NET 4.0+,那么这可能值得一读,因为 ASP.NET 路由和 URL 重写不一定是相互竞争的技术,而是潜在的互补功能。

URL 重写与 ASP.NET 路由

于 2013-06-17T01:38:56.733 回答