|
|
1
5
您应该考虑在您的类别/部门表之外创建一个表,其中每个类别都有一个唯一的URL。然后您可以使用一个特殊的例程来生成URL。这可以是一个SQL标量函数,也可以是一个clr函数,但是它要做的一件事是规范化Web的URL。您可以将“饮料&酒吧”转换为“饮料和酒吧”,将“糕点/装饰”转换为“糕点装饰”。通常,例程需要用其他东西替换所有无效的HTTP URL字符。例如:
您可以将其设置为SQL增强函数,或者将URL生成作为单独的进程运行。然后,为了实现映射,您可以将整个URL直接映射到一个类别ID。从长远来看,这种方法更好,原因有几个。首先,您并不总是生成URL,您只需执行一次,它们就会保持静态,您不必担心过程更改,然后GoogleBot就无法找到旧的URL。此外,如果发生冲突,您可能会注意到一个可能重复的类别名称,因为冲突只会因特殊字符而不同。最后,您可以从数据库中查看URL,而不必运行映射函数。 |
|
|
2
2
我在begin-authenticated请求的global.asax文件中实现了一个URL重写,因为我有一些安全性。这是我获取原始URL然后进行数据库查找的地方。然后,这将重写到ASPX页的路径,所有参数都将通过查询字符串传递。不需要编码。 但是,如果您使用URL实际更改数据,那么我可以看到您将遇到巨大的问题,因为您正在有效地使用HTTPGET更改数据库。它通常是一个坏主意,而不是我做的事情。 我只使用post请求进行任何数据库操作。这将保持URL的清洁,因为所有数据都在页面表单中。 我唯一要做的就是为page.form.action设置正确的URL,在大多数情况下,这是原始URL。 如果它是导致问题的类别名称,那么您可能应该将名称仅限于字母数字字符,并将空格替换为“-”。在查找文件名时,IIS将抛出一个带有句点“.”的不稳定字符串。 附笔。 IIS不理解波浪线“~”,这是编译器可以理解的。因此,如果在锚标记中使用它,它将无法按预期工作,您应该使用应用程序根目录而不是tilde。 编辑: 好的,这看起来像是IIS在某些字符上有问题,例如。和/和。即使您执行了URLENCODE,这些IIS仍将尝试实现其自身的含义。 因此,考虑移除它们,以便: 饮料和酒吧成为Beveragebar 糕点/装饰成为糕点装饰。 这将使您的URL保持干净,但这确实意味着数据库中有一个额外的列,因此您可以根据这个缩短的类别名称来检查URL。 |
|
|
3
1
我也有同样的问题。谢谢你写得这么好。它实际上帮助我更好地理解这个问题。 不过,我还有其他的考虑。我的目标之一是支持URL中基于文章标题的任何字符的潜力。另外,我想确保编码和双向编码/解码过程的唯一性。
所以我做了一些手工编码来解决这个问题。这不会完全消除百分比编码,但会大大减少编码,并防止用户生成不可访问的URL。我的过程从使用
好吧,这是我的密码。我们将感谢您的反馈。哦,是的,这是在vb中,但事情应该转移到c足够简单。
|
|
|
4
0
我想你在找
|
|
|
Semicolon · htaccess合并301 www和https 8 年前 |
|
|
twan · 如何仅重写特定URL而不影响其他文件 8 年前 |
|
|
yarz-tech · Angular 5 URL重写问题 8 年前 |
|
|
Peekyou · IIS重写2个角度应用程序 8 年前 |