【发布时间】:2010-11-29 22:40:24
【问题描述】:
我的网站目前处理这样的 URL...
/?p=home
/?p=profile&userid=1
/?p=users.online
/?p=users.online&page=23
/?p=mail.inbox
/?p=mail.inbox&page=12
...等等,大概至少有120-150个不同的页面,在我的网站上,一个页面就是这样构建的,
index.php 包含一个主 配置文件,然后将 函数/类文件 包含在其中
index.php 然后包含 头文件
index.php 然后包含来自 url ?p=pagename 的 页面文件
index.php 然后包含一个页脚文件
这就是我网站上每个页面的编译方式,通过这样的索引页面,我一直在考虑/考虑清理 URL,因为我现在正在重写/重组我的大多数网站代码,它是如果我要这样做,是时候做这件事了。我所说的清理 URL 的意思是使用 mod-rewrite,所以上面的 URL 结构看起来像这样......
/home
/users/1 //user ID might switch to use username as well
/users/online
/users/online/23 or /users/online/page/23
/mail/inbox
/mail/inbox/12
首先,这样做有什么缺点吗,因为它使用了 mod_rewrite,它是否会产生更多的处理工作?
也很难编写正则表达式或以我上面显示的格式匹配文件名所需的任何内容,我只列出了几个页面,但至少有 100 个不同的 URL 页面我有博客,公告,论坛,各种东西
【问题讨论】:
-
没有答案,但从用户的角度来看,请这样做:根据规范,任何带有查询字符串的 URL 都是不可缓存的。因此,您当前的结构每次都会强制重新获取。
-
@T.J.克劳德:按照什么规范?请证明这个断言。
-
@Gumbo:HTTP 规范,例如第 13.9 节 - faqs.org/rfcs/rfc2616.html
-
这适用于 HTTP 1.0 和未提供显式缓存信息的情况。如果查询字符串应该充当无缓存指示符,那么您可能想告诉一些浏览器供应商。
-
@T.J. Crowder:您将其命名为:“[...] 缓存不得将对此类 URI 的响应视为新鲜的,除非服务器提供明确的到期时间。”
标签: php regex mod-rewrite clean-urls