我有一个网站,其中我有许多类别,每个类别中有许多子类别,每个类别中有许多产品。由于URL非常不友好(它们包含GUID !!!),我想使用一种我认为称为URL Masking的方法。例如,它们不会转到catalogue.aspx?ItemID = 12343435323434243534,而是转到notpads.htm。这将显示与转到catalogue.aspx相同?ItemID = 12343435323434243534会以某种方式显示。
我知道我可以通过为每个类别/子类别创建一个文件来实现这一点(单个产品无法单独访问,因为它是批发网站 - 客户无法直接从网站购买)。这将是很多工作,因为只要类别/子类别/产品可见性发生变化,或者描述发生变化,名称发生变化,服务器就必须更新每个相关文件......你明白了......
我尝试过使用服务器端包含但在html文件中指定.aspx文件时不喜欢它。
我也尝试使用设置为100%宽度/高度的iframe,并且绝对定位在左侧0和顶部0.这很有效,但我知道有理由不应该使用这种方法,例如某些搜索引擎没有应对好吧。我还注意到“父”页面的标题(notepads.htm)不是iframe中的标题集(逻辑上这是正确的 - 但如果我继续使用这个方法,我需要解决的另一个问题)。
任何人都可以建议我采用另一种方法,或者告诉我是否使用iframe进行正确的测试?感谢。
此致
理查德
PS如果这是我想要做的错误名称,那么请让我知道它实际上是什么,所以我可以重命名/重新命名。
答案 0 :(得分:2)
查看URL重写。您可以创建正则表达式并将其映射到您的真实URL。例如
http://mysite.com?product=banana
可以映射到
http://mysite.com?guid=lakjdsflkajkfj3lj3l4923892&asfd=9234983920894893
答案 1 :(得分:2)
我相信你的意思是URL Rewriting。
IIS 7+内置了rewrite module,您可以将其用于此类事情。
答案 2 :(得分:1)
URL Rewriters解决您所描述的问题 - 当有人以一般方式请求页面A,显示页面B 时。
但你的不是一般要求。您似乎有一个有限的uuid-to-shortname映射要求。这是你自己可以或应该在你的应用程序中设置的东西,而不是在你的系统中插入一个新的机器。
在默认的.aspx页面中,您只需在存储在某处的持久表中的url中查找短名称,然后将Server.Transfer()调用到与该短名称关联的uuid命名页面。 / p>
原型应该很容易。