41

以下网址有效吗?

http://www.example.com/module.php/lib/lib.php

根据https://www.rfc-editor.org/rfc/rfc1738部分,URL 的 hpath 元素不能包含“。” (时期)。在上述情况下,有一个“。” 在“模块”之后,根据 RFC1738 是不允许的。

我读错了 RFC 还是这个 RFC 被另一个 RFC 成功了?其他一些 RFC 允许使用 '.' 在 URL ( https://www.rfc-editor.org/rfc/rfc1808 ) 中。

4

4 回答 4

53

我没有看到 RFC1738 在 URL 中禁止句点 (.) 的位置。以下是那里的一些摘录:

hpath          = hsegment *[ "/" hsegment ]
hsegment       = *[ uchar | ";" | ":" | "@" | "&" | "=" ]
uchar          = unreserved | escape
unreserved     = alpha | digit | safe | extra
safe           = "$" | "-" | "_" | "." | "+"

所以你的问题的答案是:是的,http://www.example.com/module.php/lib/lib.php是一个有效的 URL。

于 2011-09-26T13:13:28.433 回答
15

正如其他人所指出的,URL 中允许使用句点,但要小心。如果在 URL 路径的一部分中使用了单句点或双句点,浏览器会将其视为路径的更改,您可能无法获得想要的行为。

例如:

  • www.example.com/foo/./重定向到www.example.com/foo/
  • www.example.com/foo/../重定向到www.example.com/

而以下内容不会重定向:

  • www.example.com/foo/bar.biz/
  • www.example.com/foo/..biz/
  • www.example.com/foo/biz../
于 2020-07-27T21:48:26.403 回答
10

句号是允许的。请参阅本文档中的“2.3 未保留字符”部分: https ://www.rfc-editor.org/rfc/rfc3986

“在 URI 中允许但没有保留用途的字符称为未保留字符。这些字符包括大写和小写字母、十进制数字、连字符、句点、下划线和波浪号”。

于 2011-12-27T21:57:25.113 回答
2

网址中的句点没有错。如果您在您提供的链接中查看语法中的构成,则通过 ' safe' 组提到了句号​​,该组uchar通过

忽略我的回答,亚当斯更好

于 2011-09-26T13:17:55.930 回答