我的网站包含不同地方的链接,每个链接都会将用户带到特定的文档 这些链接是硬编码的,这使得对网站的每次更新都非常困难 最近文档已更新,我们希望用相应的新链接更新每个旧链接。
例如
(http://www.domain.com/OnlineDoc/default.aspx#ItemID=3551)
需要更新到
(http://domain.docfactory.com/#!doc/Toolkits/Item1-Administration-Doc)
使用ItemID
确定每个项目文档。
我要做的是以编程方式将每个旧链接重定向到相应的新链接。
我尝试使用URL Rewrite模块,但似乎忽略了“#”之后的所有内容,这很重要,因为它决定了我们需要指向哪个文档。
我的问题是:
网址重写模块是否有效? (有一个带有“#”的片段)
如果没有,Http模块会工作吗?
我正在尝试找到一种方法来轻松更新链接,而无需访问每个Web应用HTML并手动执行。
答案 0 :(得分:2)
片段不会发送到服务器。它只能由浏览器访问。所以你需要一个涉及客户端的解决方案。
但是可以 使用组合中的URL重写模块与OnlineDoc/default.aspx
中的客户端脚本,它将片段放在路径或查询部分中使用临时客户端重定向的URL。这使得文档项ID对URL重写模块可见,该模块可以执行永久的服务器端重定向到正确的URL。
澄清:
/OnlineDoc/default.aspx#ItemID=123
/OnlineDoc/default.aspx?ItemID=123
/OnlineDoc/default.aspx?ItemID=123
docfactory.com/#!doc/Toolkits/Item1-Administration-Doc
docfactory.com/#!doc/Toolkits/Item1-Administration-Doc
第一次重定向是暂时的,因为您cannot make permanent redirects with client-side scripting。第二个重定向是永久性的,因为新URL应始终替换旧URL。
使用此方法的用户的总体体验可能有点出乎意料,因为访问OnlineDoc的用户在到达目标文档之前将被重定向到两次。大多数用户可能不会注意到第二次重定向,但第一次重定向很可能是显而易见的,如果只是轻微的话。