2012-04-22 128 views
0

我有一个电子商务网站,开始在PHP和已被迁移到一个asp.net。网址重写为asp.net电子商务网站与LONG网址

我发现,除非我对我的设计师非常具体,否则我想要发生的变化不会。

有一两件事,我发疯的是很长的URL。例如说,从下面的层级类别页面: 妇产护士服装 - 孕妇裤&牛仔裤 - 孕妇牛仔裤 返回的URL www.exampledomain.com/store/category/maternity%20and%20nursing%20clothing/maternity%20pants%20 &%20jeans/maternity%20jeans.aspx!来吧!

设计师正致力于用连字符替换空格......虽然他在那里,但是有什么方法可以让他让这些网址更友好?有没有办法跳过一切,但最终的产品类别?那么,www.exampledomain.com/maternity-jeans.aspx?

为了方便起见,我应该删除层次结构并直接从主页获得最终的类别?我不想这样做,因为有很多子类别,没有比这个例子更深的。

任何意见将热烈收到。正如我所说的,如果我不对我的设计师说,这就是我想要的,这就是我认为你这样做的原因,我得到了擦掉 - 由于几个原因,我暂时与他们停滞不前。

+0

哦,我应该避免在URL的“&”?我的重写可以设置为忽略“&”或“和”吗?我以前的PHP网站可以。 – 2012-04-22 10:24:04

回答

0

我会亲自去同一个URL结构,涉及的最少字符量,例如:

http://www.example.com/maternity-jeans

这不仅是干净的,它是搜索引擎优化更好,因为有像较少没用的话“商店”和“类别”。它的安全性也稍微好一些,因为它并没有让你明白你的网站是建立在ASP.NET上的。

为了达到这个URL结构,我通常会选择使用Helicon ISAPI rewrite,如果你在一个专用的服务器上,你可能能够免费获得免费版本,否则将收取99美元的费用。

另一种方法是使用IIS URL重写,你需要运行IIS 7及以上使用这些。

我假设你有一个单一的分类页面,所有类别的加载?对于下面的例子,我将其称为“category.aspx”。

这条规则之下将抓住类别的名称,并通过把它作为你的“category.aspx”页面的查询字符串参数,然后您可以使用查询数据库和显示页面。

赫利ISAPI:

RewriteRule ^/(.*)$   /category.aspx?name=$1 [L] 

IIS URL重写:

<rule name="Category" stopProcessing="true"> 
    <match url="(.*)" /> 
    <action type="Rewrite" url="category.aspx?name={R:1}" /> 
</rule> 

虽然上面的URL结构将是我的偏好,你可能要考虑到其他页面的网址,您的现场。上述规则将采取任何URL并假设它是一个类别,显然不是所有的URL都是类别。

在这种情况下,你有两个选择,你既可以包含一个独特的文字或字符识别,这是一个类别,如:

http://www.example.com/c/maternity-jeans

这将改变你的重写:

赫利ISAPI:

RewriteRule ^/c/(.*)$   /category.aspx?name=$1 [L] 

IIS URL重写:

<rule name="Category" stopProcessing="true"> 
    <match url="c/(.*)" /> 
    <action type="Rewrite" url="category.aspx?name={R:1}" /> 
</rule> 

或者,您可以通过您网站上的脚本运行每个页面,根据该URL确定要查看的页面类型,然后渲染相应的内容。

它很大程度上取决于您的网站目前的工作方式以及是否准备进行更改。