0

我正在尝试创建一个流畅和动态的界面,我确实喜欢 Facebook 加载页面的方式,这样页面的各个部分都保持不变(最重要的是聊天部分、顶部导航栏和页脚),而您导航到的内容异步加载。

那么.. 为了实现这样的系统需要做什么?我在想的是,.htaccess通过包含处理该请求的相应 PHP 文件,将所有链接请求重新路由到某个主要的“集线器”PHP 文件,该文件包含所请求的任何内容。因此,如果我们要/photos在导航栏中请求,我们的请求将转到 .htaccess 文件,该文件会将请求重新路由到某个mainhub.php文件,该文件又将包含我们的photos.php文件。

但我遇到了一些小问题。mainhub.php如果我使用这条规则重新路由所有流量:RewriteRule ^(.*)$ mainhub.php [QSA]那么所有内容(图像、css、js 文件等)也将通过该mainhub.php文件。那不好。。

此外,正如 Facebook 有一些页面没有异步加载,但可以正确导航到(如设置页面),我也希望拥有该功能。所以也有一些页面不通过mainhub.php文件的要求。

我不确定如何完成的另一件事是在访问特定链接时加载“粘性”内容。例如/home,可能是主页,我可以将粘性位硬编码到home.php文件中,当用户浏览网站时 - 请求其他页面而不包括静态位。似乎合乎逻辑。但是如果用户跳转到另一个页面(不是/home我有粘性部分编码的页面)会发生什么,那我该怎么办?..

也许我在想这个错误的方式,所以我希望一些.htaccess+ PHP 大师可以帮助我解决这个问题。

4

1 回答 1

1

可以使用 htaccess 完成重新路由。所有文件、目录和符号链接仍然可以访问,其他所有内容都被重定向到 (在这种情况下) index.php

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

您可能想要的是使用 ajax 进行一些异步加载。这完全独立于任何 .htaccess 重新路由。对于 ajax 部分:您可以为所有应该使用 ajax 加载的链接设置一个特殊的 css 类。然后使用 jQuery 选择器寻找这个特殊的类。您也可以设置通过 ajax 加载的链接点击事件。您可能希望为此使用更大的 javascript 框架,例如 jQuery。通过检查标头 - 您可以区分非 ajax 调用和 ajax 调用。

于 2013-07-29T12:12:51.557 回答