真的很基本的mod_rewrite问题

时间:2009-10-16 21:29:59

标签: php apache mod-rewrite rewrite

我正在尝试为网站使用SEO友好的URL。该网站以分层方式显示信息。例如,如果我的网站是关于汽车的,我希望网址“http://example.com/ford”显示存储在我的“汽车”表中的所有福特模型。然后,网址“http://example.com/ford/explorer”将显示所有福特资源管理器模型(V-6,V-8,Premium等)。

现在提出问题: mod_rewrite用于将查询字符串样式URL重写为语义URL,反之亦然?换句话说,当我使用JavaScript设置window.location=$URL时,网址应该是查询字符串版本“http://example.com/page.php?type=ford&model=explorer”还是我在内部使用“http://example.com/ford/explorer”,然后我可以访问查询字符串变量?

希望有人能看到我对这个问题的困惑。对于它的价值,我确实为我的所有顶级类别制作了独特的“slu”(显然,该网站不是关于汽车)。


感谢目前为止提供的所有帮助。我得到了重写工作,但它影响了网站上的其他路径(CSS,JavaScript,图像)。我为所有这些包括使用正确的路径结构(即'/images/car.png'和'/css/main.css')。我是否必须对所有文件使用绝对路径('http://example.com/css/main.css')?谢谢!

2 个答案:

答案 0 :(得分:3)

通常,使用mod_rewrite的人使用如下术语:

我希望mod_rewrite将A重写为B。

这意味着外部世界对页面A的任何请求都会被重写到服务器上的文件B.

您希望外部世界看到类似

的网址

A)http://example.com/ford/explorer

但您的网络服务器希望它们看起来像

B)http://example.com/page.php?type=ford&model=explorer

我想说你想重写(A)看起来像(B),或者你想将语义URL重写为查询字符串URL。

由于用户点击了您网页上的所有链接和/或浏览器请求了这些链接,因此您希望它们看起来像(A)。这包括javascript在window.location中使用的链接。他们可以而且应该看起来像(A)。

答案 1 :(得分:2)

设置mod_rewrite后,您的链接应指向网址的mod_rewritten版本(在您的示例中为http://mysite.com/ford/explorer)。在系统内部,您仍然会将变量引用为传统查询字符串名称值对。

值得指出的是,谷歌现在开始从搜索引擎的角度提倡更多的逻辑URL,即通过mod重写的查询字符串

  

这是否意味着我应该避免   重写动态网址?那是   我们的建议,除非你的   重写仅限于删除   不必要的参数,或者你是   非常勤奋地删除所有   可能导致问题的参数。   如果您将动态网址转换为   让它看起来像你应该的静态   意识到我们可能无法做到   正确地解释信息   所有情况   http://googlewebmastercentral.blogspot.com/2008/09/dynamic-urls-vs-static-urls.html

也值得一看: http://googlewebmastercentral.blogspot.com/2009/08/optimize-your-crawling-indexing.html