奇怪的网址行为

时间:2012-11-15 04:27:07

标签: html ajax url url-rewriting

我想知道这些天网站如何管理他们的内容和AJAX电话。

Facebook如何能够拥有以下网址: http://www.facebook.com/zuck

没有/在zuck结束时喜欢 http://www.facebook.com/zuck/

这显然非常方便,因为他们实际上并不需要创建一个名为zuck的子目录。

我也注意到像http://hypem.com/popular这样的地方也在这样做。方便他们,因为他们能够不间断地运行他们的媒体播放器,他们不需要在他们的URL中有#。

3 个答案:

答案 0 :(得分:2)

这种URL主要使用.htaccess文件中的Apache重定向规则,你会看到像domain.com/example这样的内容,但在后端它真的意味着将其重定向到类似

的内容

domain.com/subdirectory/maybe-anotherone/example.php

所以他们不希望用户看到他们系统的确切模式。

答案 1 :(得分:2)

这是URL rewrite功能。

可能有各种实现,但基本上它是由Web服务器采用请求路径(例如/zuck//popular/songs/whatever)完成的,而不是在该路径中查找文件将其解析为参数(可能存在HTTP堆栈或稍后定义的规则。

因此服务器内的http://www.facebook.com/zuck变为等同于http://www.facebook.com/profile.php?id=zuck(或类似的东西)。

答案 2 :(得分:2)

它被称为nice-url或URL-Rewrite。

您可以遍历对 index.php 的所有请求,您可以在PHP中通过$_SERVER['REQUEST_URI']处理它。

您需要在站点的根目录中创建名为 .htaccess 的文件。这是我正在使用的代码,它将图像,图标和其他一些资源保留在范围之外:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_URI} !^/phpmyadmin/
    RewriteRule !\.(ico|gif|jp?g|png|pdf|doc?|xls?|ppt?)$ index.php [L]
</IfModule>