快一点。
我正在使用mod重写并且已经有大多数替换:
_
æ
= ae
Æ
= ae
等等。
/
的自然替换字符是什么?
由于
答案 0 :(得分:2)
下划线被视为单词字符,因此foo_bar
是一个单词,而不是两个单词。但连字符不被视为单词字符,因此foo-bar
是两个单词。
因此,您应该在任何地方使用hypen -
分隔两个部分和下划线_
,无论您想要连接两个部分。如果/
用于分隔,我更喜欢炒作-
。
答案 1 :(得分:1)
- Æ= ae
您不一定需要这样做。您可以将非ASCII Unicode字符放在URL中,就像UTF-8编码的字节一样。所以:
http://en.wikipedia.org/wiki/%C3%86
在浏览器中显示为:
http://en.wikipedia.org/wiki/Æ
可以粘贴到地址栏中。
空格和斜杠可以编码为%20和%2F。但是,这些表单仍然在浏览器中显示为百分比,因为它们是保留字符。所以他们看起来不那么漂亮。 %2F存在一个额外的问题,即基于CGI的传统脚本环境无法读取它们,而Apache默认会故意阻止它们阻止这些脚本混淆并留下安全漏洞。
所以我通过完全删除来制作标题:
# % ' ( ) ? [ ] (U+00AD soft hyphen)
以及任何控制字符(除了U + 00A0和U + 007F到U + 00BF之外的U + 0000到U + 001F)。然后替换任何运行:
" $ & * + , / : ; < = > @ \ ^ (U+0020 space) (U+000A newline)
只有一个下划线。这消除了%xx序列出现在URL中的必要性。 (对于Unicode字符,仍然会有%xx序列,但用户将看不到它们。)
如果您愿意,可以使用连字符而不是下划线,无论哪个更漂亮。搜索引擎应该没问题。
对其他答案的评论:
因为我使用php在我的数据库中搜索名称。因此,每个角色都必须转换回原始角色,否则将找不到匹配。
在这种情况下,你不能做任何不可恢复的角色。您不能将'Æ'更改为'ae',空格必须编码为'%20'并且斜杠编码为'%2F'。这将导致稍微丑陋的URL,'%2F'将为您提供Apache和IIS上的部署问题。
如果您需要仅关注标题,则需要在已处理的slug上添加(UNIQUE索引)列以进行查找,如上所述。但请注意,您无法重命名/更正页面标题,因为它会更改slug,从而破坏URL。
解决这个问题的常用方法是在slug之外加入一个数字ID(例如,参见SO如何做)。您还可以301重定向slug名称错误的地方以获得最佳SEO。
答案 2 :(得分:0)
我会使用破折号 - 因为谷歌将这样的词分开用于搜索引擎优化目的,甚至是下划线_因为这些都是可读性的完美。