url - URL 中的符号替换 : What to do when replacement already exists in input?

标签 url url-rewriting substitution

如果您能想出更好的标题,请随时进行编辑。

我正在尝试创建一个简单的 JavaScript 系统,该系统根据 URL 的 #fragment 标识符(也称为哈希值)显示特定的漫画。

当在此哈希中使用空格或类似的特殊字符时,它们将通过 URL 编码转换为 %20 或类似的序列。

这看起来不太好。因此,当您想通过 URL 中的标题引用某个漫画、博客文章等时,我相信用不同的 URL 安全符号替换所有空格和其他 URL 不安全字符是很常见的。事实上,StackOverflow 也这样做。

但是,当我想要替换的符号也存在于输入字符串中时,我该怎么办?

例如,当我将所有空格 ( ) 替换为连字符 (-) 时,我该如何处理已存在的连字符?

最佳答案

另一种解决方案是以类似于 Stack Overflow 的方式实现它。在 URL 中同时包含内部标识符和“用户友好”标识符。例如,这是此问题的“标准”链接:

http://stackoverflow.com/questions/14543452/symbol-substitution-in-urls-what-to-do-when-replacement-already-exists-in-input

但以下链接也同样有效:

http://stackoverflow.com/questions/14543452/this-part-of-the-address-is-just-to-look-nice

您可以执行类似的操作,为每个漫画和用户友好的名称添加某种标识符(可能是序列号),例如:example.com/comics/#42-the-forty-second-comic-title .

这个系统有很多好处:

  • 实现起来非常简单 - 只需解析第一个破折号 (-) 之前的片段部分,并使用它来构建特定漫画的 URL
  • 它允许您提供 permanent link到漫画,因为即使您碰巧更改了漫画的标题,内部标识符部分也永远不会改变
  • 它允许您轻松地重命名漫画,而无需担心更新网址、图像路径等,因为漫画名称对于系统正常工作并不是绝对必要的
  • 它使得仅使用客户端 JavaScript 即可轻松实现“下一个”和“上一个”按钮(因为您知道“#23-some-title”之前的漫画将变为“#23”

关于url - URL 中的符号替换 : What to do when replacement already exists in input?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14543452/

相关文章:

url - 无法将 "+"传递给 grails webservice URL

apache - 如何使用 htaccess 将非 www 重定向到 www URL?

regex - 如何用 Perl 正则表达式替换重叠匹配项?

php - 如何从url获取文件夹根目录?

java - 如何使 Java URI 类停止使用文件

Tomcat 8 - 在不更改 server.xml 的情况下启用 RewriteValve

Python字符串模板替换为正则表达式组的字典?

monads - 通过 (monadic) join 和 fmap 进行终止检查替换

php - 当对短网址使用唯一的字母数字字符串时,将创建的字符串存储在数据库中还是即时编码/解码更好?

java - Pax-web、jetty和RewriteHandler导致404