我很感兴趣的是书签如何适用于像facebook这样的社交网站,例如当你查看别人的个人资料时
www.facebook.com/customname
或者如果他们还没有制作一个
www.facebook.com/generatedname
是否有某个获取请求我失踪了?是
www.facebook.com/profile.php?key=
隐藏在网址中?但是服务器如何知道解释网址以查找某人的个人资料页面?它是如何工作的!!!!!谢谢!
答案 0 :(得分:5)
是的,通常会使用rewrite engines隐藏请求,例如mod_rewrite
。
像facebook.com/customname
这样的东西被重写为facebook.com/profile.php?key=customname
,然后在内部从数据库中查找正确的个人资料页面。
答案 1 :(得分:1)
有一种称为 mod_rewrite
的解决方案,它实际上翻译用户访问的网址(并且 用户可见 )进入脚本的路径(以及所有参数)。
示例:当您访问例如。 http://www.facebook.com/ben
,服务器实际上可能会将其转换为www.facebook.com/profile.php?name=ben
,而不会注意到它(因为它发生在服务器端)。
这就是它的完成方式。
但是还有另一个松散相关的解决方案发生在客户端(在用户的浏览器内,而不是在服务器上)。此解决方案称为 pushState
,它是HTML5的功能(HTML5是新标准,支持现代浏览器中类似应用程序的行为)。
只需查看this demonstration(它允许您更改URL,来回移动,但如果您直接键入访问过的URL,则会显示服务器上没有任何内容)。要做类似的事情,你需要学习JavaScript(在浏览器端执行的脚本的语言)。
另外pushState
某些网页(如Twitter和 - afair - Facebook)使用基于位置哈希的解决方案(#
之后的网址部分),它们保持与某些已弃用的浏览器的兼容性,如IE7等。
也许这对你的问题来说太过分了,但你现在应该非常了解用户可见的URL与真正调用的URL有何不同。
如果您还有其他问题,请与我们联系。
答案 2 :(得分:0)
他们可能使用.htaccess
或类似机制将所有请求重定向到单个条目文件。该文件开始处理请求,还可以检查是否在网址上指定了customname
帐户。