【问题标题】:Should I use mod_rewrite for my site's URLs?我应该对我网站的 URL 使用 mod_rewrite 吗?
【发布时间】: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


【解决方案1】:

当然。这是 Apache 的主要目的之一,因此它被设计为非常有效地完成它。事实上,我会请你使用那个方法。

  1. 它为访问者提供更简洁的 URL
  2. 对 SEO 来说太棒了
  3. 让网站更专业
  4. 如果用户在尝试查找某个页面而不实际遍历您的站点以找到它时,它可以让用户更轻松地猜测 URL。

没有缺点,使用该 URL 结构有很多优点。加油!

【讨论】:

  • 糟糕。 “不”是对他的问题“它会产生更多的处理工作吗?”的回答。已修复 - 谢谢。
  • 感谢您的回答,我一直不确定的一件事是我的许多部分都有像 page=12 这样的分页,所以我不知道当没有分页时这是否会导致问题该页面,例如,如果您在第 1 页,则它不会在 url 中显示任何分页数据
  • jason:当您遇到特定的正则表达式问题时,请寻求帮助。立即开始实施...此外,从 blah/whatever/p# 到您的查询字符串很容易...
猜你喜欢
  • 1970-01-01
  • 2011-04-25
  • 2013-10-04
  • 1970-01-01
  • 2010-10-13
  • 2010-12-03
  • 2010-10-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多