我正在尝试创建一个流畅的动态界面,我确实喜欢Facebook加载页面的方式,以便页面的各个部分保持不变(最重要的是聊天部分,顶部导航栏和页脚),而内容导航到异步加载。
那么......为了实现这样的系统需要做些什么?我在想的是,通过.htaccess
将所有链接请求重新路由到某个主“hub”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大师可以帮助我解决这个问题。
答案 0 :(得分: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调用。