我们的搜索页面的网址是这样构建的:
http://www.example.com/results/name/John/city/Miami/gender/Male
这将显示迈阿密的每个男性名叫约翰。
当其中一个过滤器留空时,网址将是这样的:
http://www.example.com/results/name/John/city//gender/Male
因此,网址中有两个斜杠。
Outlook似乎不喜欢这样。当您单击第二个URL时,它会删除两个斜杠中的一个。这样就留下了这样的网址:
http://www.example.com/results/name/John/city/gender/Male
人们将约翰称为城市的“性别”......
解决此问题的最佳方法是什么?
答案 0 :(得分:6)
这是Microsoft Office中的错误。
RFC 2396允许带有两个连续斜杠的网址,但它们并不常用。正如RFC所说(摘自附录A):
abs_path = "/" path_segments
path_segments = segment *( "/" segment )
segment = *pchar *( ";" param )
请注意,段定义为包含ZERO OR MORE字符。 (你可能会认为这是一个规范错误,它不应该被允许......但它是)
正如您所发现的,Microsoft Office将“修复”包含双斜杠的网址。这显然是“清洁和一致性”的刻意特征。无法覆盖或禁用它。 Source
因此,正如其他人所建议的那样,您可能不得不改变服务器格式化URL的方式。
答案 1 :(得分:2)
尝试用ASCII代码2F(十进制47)替换(其中一个)斜杠。
答案 2 :(得分:1)
标准是将两个斜杠合并为一个,因此无法防止这种情况发生。在这些斜杠之间添加一些内容以向搜索页面指示该字段为空白可能是个好主意。
或者,您可以更改搜索页面以使用查询字符串,例如:
http://www.example.com/results?name=John&city=&gender=Male
答案 3 :(得分:1)
您可以使用-
代替空白细分。例如:
http://www.example.com/results/name/John/city/-/gender/Male
答案 4 :(得分:1)
" REGKEY"应该有所帮助:您需要实现此密钥
Path: "HKEY_CURRENT_USER\Software\Microsoft\Office\Common"
Name: "AllowConsecutiveSlashesInUrlPathComponent"
Type: "REG_DWORD"
Value: "1"
实施&更多详细信息,请参阅here。
答案 5 :(得分:0)
如果必须使用斜杠,请考虑在服务器端修复此问题。创建关键字列表(city | results | ...),如果斜杠后跟其中一个关键字,则将其视为空条目。 (编辑)双斜杠不应该被视为一个,但正如你所发现的,一些应用程序“修复”了这个。
另一种固定方法是使用占位符,通常是点,因为它没有特殊含义:
http://example.com/results/name/./city/amsterdam
答案 6 :(得分:0)
我同意彼得的观点,只需将第二个“ /”替换为“%2F”或“%2f”就可以了。