Use*_*ser 10 django url url-shortener
我正在尝试使用Django开发一个URL缩短器应用程序.我不明白如何为每个长URL创建唯一字符串以用作短URL.像其他流行的URL缩短程序一样.我怎样才能做到这一点?是否可以制作相同长度的所有短网址?
vol*_*ron 12
我不明白如何为每个长URL创建唯一字符串以用作短URL.像其他流行的URL缩短程序一样.
正如sugerman所说,这很简单,你只需要创建一个哈希表.
我怎样才能做到这一点?
有动态的方法可以做到这一点,但最简单和最有效的方法是在数据库中有一个2字段表,它包含hashkey和完整的url.然后,您的服务器(如Apache)将能够重定向到正确的页面.
是否可以制作相同长度的所有短网址?
是的,在某种程度上,一旦达到最大密钥数量,就必须重新使用/替换短网址ID.当你设置一个固定长度,那么你就限制了可能性.
我假设URL shortener你指的是像jsFiddle或者pastebin这样的东西,因为它们有类似的东西http://jsfiddle.net/sdfj2/.否则,我们需要进一步澄清.
您可能希望创建一个简单的db表,将短值映射到URL.
您可以生成的最简单的短网址只是序列号或自动增量列(分配第一个值1,然后是2,依此类推)
可以使所有相同长度的URL长度不等,直到您没有用完相同长度的值,例如,如果您只使用数字(作为一个简单示例),它将从0000到9999.
神奇的部分是你可以使用mod_rewrite将url作为参数传递给你的脚本,让你的应用程序在db中查看值,然后重定向用户.
这个mod_rewrite的重写规则将采用像example.com/0000这样的URL并重定向到example.com/index.py?id=0000你会把它放在.htaccess中(我假设你正在使用apache.)
您的应用程序只读取ID并重定向到关联的页面.
RewriteRule ^([0-9]+)/?$ index.py?id=$1 [QSA,L]
Run Code Online (Sandbox Code Playgroud)
如果您决定使用散列或简单的base64序列号(这将是一个更紧凑的自动增量),它看起来会略有不同:
RewriteRule ^(.*)/?$ index.py?id=$1 [QSA,L]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5099 次 |
| 最近记录: |