我有一个web.config文件,我用它友好地重写url,如下所示:
<configuration>
<system.webServer>
<rewrite>
<rules>
// rewrites here
<rule name="articles" stopProcessing="true">
<match url="^article/([0-9]+)/?$" ignoreCase="true" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="/article.asp?id={R:1}" appendQueryString="true" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
但是我需要显示mywebsite.com/article/1/数据库中文章的名称,例如mywebsite.com/title article/。我已经做了一个很好的研究,但我没有找到任何真正解释如何做。
1条答案
按热度按时间rryofs0p1#
我认为这在web.config中是不可能的,因为web.config不能查询数据库。您所能做的就是为articles表中的每个页面创建一个单独的重写规则。
您的另一个选项,以及在iisurl重写模块出现之前使用得更多的选项,是创建一个自定义404页并将逻辑放在该页中。
在配置文件的system.webserver部分添加以下内容:
在404页面上,您可以检索将用户带到带有
然后可以使用vbscript获取所需的url部分,并在数据库查询中使用它。我建议您使用示例中的url模式
你可以用
TitleArticle
在数据库查询中查找所需的页面,然后Server.Transfer
将用户带到那里,同时在地址栏中保留友好的url。我建议使用Response.Write TitleArticle
在测试以确保向数据库发送正确的值时。显然,这都需要在条件语句中,并且
Else
条件是显示标准404消息