以下是真实案例,在NewsNow.co.uk中,有来自数千个网站的最新消息链接。以及其中一个新闻网址的示例:
http://newsnow.co.uk/A/471722742?-19721
所有新闻网址都是这样形成的,但是当我们点击它时,我们将被带到真正的网址,例如:
http://www.abcactionnewsx.com/dpp/news/state/bla-bla
任何人都知道如何有效地实现这一目标?
答案 0 :(得分:2)
将“内部”路径表(“newsnow”网址)和“目标”网址存储在某种数据库中;对于较小的applcations,sqlite3将是一个不错的选择。
如果您选择的数据库中特定字符串的查找时间太慢,您可以对“内部”路径进行哈希处理。
当请求进入时,请在数据库中查找并发回302响应,并将“目标”URL作为资源的新位置。
答案 1 :(得分:0)
这是使用内置于Apache或Nginx等常见Web服务器中的重写引擎完成的。这些引擎允许您编写规则,将第一个URL转换为您的php页面可以更好理解的内容。例如,您可以创建将上面的第一个链接转换为:
的规则http://newsnow.co.uk/index.php?catagory=A&id=471722742&referrer=-19721
这对用户是透明的,他们只会看到他们首次输入的链接。然后,您可以使用传入的变量来执行您想要的任何操作。在这种情况下,您可能希望使用变量来执行某种数据库查找以检索您感兴趣的实际目标。然后,这只是执行php重定向到相关链接的问题。
查看以下链接,快速了解Apache的重写功能(称为mod_rewrite):http://www.besthostratings.com/articles/mod-rewrite-intro.html