如何使用Last.FM或Wikipedia等社区URL样式?

时间:2010-01-24 20:49:28

标签: php mysql url url-rewriting url-style

我正在尝试理解我应该如何处理URLs中的字符,这是因为我正在建立一个用户可以存储内容的网站,并通过在{{中挖掘它的名字来转到内容页面1}}。

所以,像URLWikipedia网站。

我在网站上看到,用户可以写一些像Last.FM这样的内容,并且艺术家的页面可以到达。

在页面加载后,如果我复制了URL,我看到写为:http://it.wikipedia.org/wiki/Trentemøller但是如果我将其粘贴到文本编辑器中,它将被粘贴为
http://it.wikipedia.org/wiki/Trentemøller

所以将http://it.wikipedia.org/wiki/Trentem%C3%B8ller字符粘贴为ø

当然对于这样的网址(艺术家Takeshi Kobayashi的页面)也一样

%C3%B8
http://www.last.fm/music/小林武史

如果我对第一个或第二个进行数字处理,那么页面在任何情况下都有效,为什么?

我想我应该对http://www.last.fm/music/%E5%B0%8F%E6%9E%97%E6%AD%A6%E5%8F%B2.htacces做一些事情,但我不确定,这些特殊字符会自动转换为网址特殊字符吗?

然后,我该如何让PHP使用内容名称进行正确的查询?

如果我有一张像

这样的表格
mod_rewrite

我可以table_users - username - age - height - weight - sex - email - country 写一个像mod_rewrite这样的地址来获取http://mysite.com/user/bob的{​​{1}} bob,但是username呢?

这里我展示了一个我想做的简单例子:

table_users

这有效,但它仅限于[a-zA-Z0-9 _ + - ],如何在不损失太多安全性的情况下更好地兼容所有其他字符?

有人知道某种方法来避免麻烦吗?

3 个答案:

答案 0 :(得分:5)

尝试使用urlencode和urldecode

编辑:

这是Visualy url编码和解码的描述

http://blog.neraliu.com/wp-content/uploads/2009/10/url-encoding.png

答案 1 :(得分:2)

大多数浏览器urlencode() 小林武史%E5%B0%8F%E6%9E%97%E6%AD%A6%E5%8F%B2

关于您的.htaccess mod_rewrite规则,您是否考虑过使用以下内容:

RewriteEngine On
RewriteRule ^(user/)(.+?)[/]?$ user.php?username=$2

答案 2 :(得分:0)

据我所知,每个非ASCII字符的URL都映射到唯一的基于ASCII的URL。这实际上是客户端的一项功能。请查看:http://kmeleon.sourceforge.net/bugs/viewbug.php?bugid=631以查看示例并链接到转换此版本的RFC。