我个人会使用包含最少字符的 URL 结构,例如:
http://www.example.com/maternity-jeans
这不仅干净,而且对 SEO 更有利,因为“商店”和“类别”之类的无用词越来越少。它的安全性也稍好一些,因为它不会让人明显看出您的站点是基于 ASP.NET 构建的。
为了实现这种 URL 结构,我通常会选择使用Helicon ISAPI rewrite,如果您在专用服务器上,您可能可以使用免费版本,否则需要 99 美元的费用。
另一种选择是使用 IIS Url 重写,您需要运行 IIS 7 及更高版本才能使用这些。
我假设您有一个所有类别都加载的类别页面?对于下面的示例,我将其称为“category.aspx”。
下面的这 2 条规则将捕获类别的名称并将其作为“category.aspx”页面的查询字符串参数传递,然后您可以使用它来查询数据库并呈现页面。
螺旋ISAPI:
RewriteRule ^/(.*)$ /category.aspx?name=$1 [L]
IIS 网址重写:
<rule name="Category" stopProcessing="true">
<match url="(.*)" />
<action type="Rewrite" url="category.aspx?name={R:1}" />
</rule>
尽管上述 URL 结构是我的首选,但您可能必须考虑您网站上其他页面的 URL。上述规则将采用任何 URL 并假定它是一个类别,显然并非所有 URL 都是类别。
在这种情况下,您有几个选项,您可以包含一个唯一的单词或字符来标识它是一个类别,例如:
http://www.example.com/c/maternity-jeans
这会改变你的重写:
螺旋ISAPI:
RewriteRule ^/c/(.*)$ /category.aspx?name=$1 [L]
IIS 网址重写:
<rule name="Category" stopProcessing="true">
<match url="c/(.*)" />
<action type="Rewrite" url="category.aspx?name={R:1}" />
</rule>
或者,您可以通过网站上的脚本运行每个页面,该脚本会根据 URL 确定您正在查看的页面类型,然后呈现适当的内容。
这在很大程度上取决于您的网站目前的工作方式以及您是否准备好进行更改。