我已经有一个ASP.NET网站
我想将我的网站更改为更友好的SEO网址。
我想改变前。这个网站: www.mydomain.aspx?条款ArticleID = 5
于: www.mydomain /条/ learningURLrewrite - 需要从DB
中读取文章名称我如何做到这一点?
我已经尝试过谷歌的一些文章,提到IhttpModule没有任何运气。
我的目标是让一个类负责基于folderpath重定向(如下所示):
string folderpath = "my folderpath" (could be articles, products etc.)
string id = Request.QueryString["id"].ToString();
if(folderpath.equals("articles"))
{
string name = //find name from id in DB
//redirect user to www.mydomain/article/name
}
if(folderpath.equals("products"))
{
string name = //find name from id in DB
//redirect user to www.mydomain/products/name
}
我也想删除aspx扩展名
答案 0 :(得分:1)
您也可以使用ASP.NET WebForms进行路由。
步骤如下:
在应用程序启动时添加路径(或路径)。
//In Global.asax
void Application_Start(object sender, EventArgs e)
{
RouteTable.Routes.MapPageRoute("My Routename", "{*name}", "~/Article.aspx");
}
将Article.aspx创建为普通网络表单
在Article.aspx的代码中,您可以像这样访问网址路径:
public void Page_Load(object sender, EventArgs e)
{
var thePath = RouteData.Values["name"];
// Lookup the path in the database...
}
答案 1 :(得分:0)
此帖子告诉您如何使用asp.net 4的路由引擎 - 给它一个旋转 - 如果您在实现它时遇到特定问题,请告诉我们。
http://weblogs.asp.net/dotnetstories/archive/2011/01/03/routing-in-asp-net-4-0-web-forms.aspx
由于您需要特定的参数用法,您可以定义要发送到您的页面的参数。为此,请参阅: http://msdn.microsoft.com/en-us/library/cc668177.aspx
和
答案 2 :(得分:0)
如果您使用的是ASP.NET 4,那么您应该查看URL Routing。您最终会设置自定义路线,如下所示:
routes.MapPageRoute(
"View Article", // Route name
"Articles/{*ArticleName}", // Route URL
"~/Articles.aspx" // Web page to handle route
);
你写出这样的新链接:
Page.GetRouteUrl("View Article", new { ArticleName= NAMEFROMDATABASE });
很遗憾,我不会向您提供有关如何构建整个网站的摘要,但有两个非常好的起点是article by Scott Gu,另一个位于4 Guys。
答案 3 :(得分:0)
如果您使用.net 3.5或更低版本,则可以使用这些
我在.net 3.5
中制作的所有项目中使用第二个如果使用.net 4.0,那么你可以做这些
在appSettings
标记
<rewriter configSource="URLRewriter.config"/>
然后创建名为URLRewriter.config
并且你可以像这样写(为不要重写的文件添加处理停止,即图像和js等)
<rewrite url="^(/.+(\.gif|\.png|\.jpg|\.ico|\.pdf|\.css|\.js|\.flv|\.eot|\.svg|\.ttf|\.woff|\.txt|\.doc|\.docx|\.pdf|\.xls|\.xlsx|\.xml)(\?.+)?)$" to="$1" processing="stop" />
<rewrite url="~/article/([^/.]+)" to="~/articledetail.aspx?articlename=$1" />
然后你会在查询字符串中得到文章名称,如下所示
string articlename = Request.QueryString["articlename"];
要将文章链接放在网站的菜单或其他位置,您可以添加AppSettings,以便稍后如果您想要更改网址模式,您可以轻松地从配置中更改它,
<add key ="ArticalDetailsURL" value="/article/{0}" />
然后,在页面中你可以这样做
string articleName = "TestArticle";
lnkMenuLink.NavigateUrl = string.Format(ConfigurationSettings.AppSettings["ArticalDetailsURL"], articleName);
谢谢和问候,
Harsh Baid