穷人的干净网址与Mod_Rewrite


8

在我工作的公司中,我们已经准备好设计一个新的网站,并且在如何处理干净的URL方面存在一些分歧。在过去的一年中,我们对现有网站进行了小幅改进,以期进行大规模重新设计,其中涉及“穷人的Clean URLs™”。

例:
http://www.example.com/products/widgets/index.php

http://www.example.com/products/sprockets/index.php

对于新站点,有一些关于使用mod_rewrite的讨论:

  1. 用户要求 http://www.example.com/products/widgets/
  2. mod_rewrite将它们发送到 http://www.example.com/index.php?page=products/widgets
  3. index.php将它们发送到真实页面 http://www.example.com/products/widgets.php

我看不到这些rigamaroll如何增加任何价值。支持mod_rewrite的员工声称,更少的目录在某种程度上等同于更易于维护。

我们现有的页面均未使用查询字符串中的变量。所有内容都在实际文件本身中。我们计划将一些内容放入数据库中,例如我们将参加的新闻稿和即将举行的贸易展览,但是绝大多数页面将仅使用PHP来包含页眉,页脚和导航之类的常见HTML。我肯定会使用mod_rewrite这样的动态内容。

我缺少我们应该对所有内容使用mod_rewrite的一些大好处吗?可怜的人的干净URLs™是否足以容纳我们网站的非数据库部分?


我拖了这么...一个干净的URL太多麻烦...

Answers:


3

如上所述,您在上面概述的3个步骤的过程似乎是多余且无用的。如果在第3步中index.php将它们带到“真实”页面,那么为什么还要用mod_rewrite呢?这样做将否定mod_rewrite提供的优势。即,搜索引擎友好的URL和更容易的网站维护。如果您停止在第二步,则只需保留一个页面即可享受mod_rewrite的好处,但实际上它可以提供不限数量的页面,并且对用户和搜索引擎透明,因为他们只能在步骤1中看到URL。


4

神话“ / pagename”或“ /pagename.htm”对搜索引擎比“ /pagename.php”更好。至少在Google,绝对没有这个基础(我也假设其他基础)。同样,即使“ index.php?page = pagename”也不需要重写为“ / pagename”,搜索引擎也可以毫无问题地理解这些URL,而Google甚至记录下来,它希望用户不要重写它们是不必要的(http://googlewebmastercentral.blogspot.com/2008/09/dynamic-urls-vs-static-urls.html)。因此,假设您没有使用URL参数创建无尽的URL,则重写的URL不一定比未重写的URL对搜索引擎更友好

也就是说,与丑陋/复杂的URL相比,用户可能更喜欢漂亮的URL。如果您主要担心的是在搜索结果中有不错的网址,那么我来看看Google现在支持的面包屑微格式(http://googlewebmastercentral.blogspot.com/2010/09/rich-snippets-testing-tool- Improvements.html),因为它们通常可以为搜索结果中的网址提供更好的用户体验。这不会解决用户希望链接到外观精美的URL的问题,但前提是您的URL并非无止境地复杂(并且您的示例也没有),如果您为此重写它们,则可能不会产生明显的变化。用例。如果没有可测量的差异,那么花时间设计和维护这样的设置可能就没有意义。


1

您所说的“穷人的干净URL”就是通过文件系统实现的干净URL。您可以使用mod_rewrite拥有这些类型的URL,就像您可以拥有没有mod_rewrite的第二种URL类型一样。

干净的URL正是名称所隐含的含义-干净或看起来干净的URL。都

http://yoursite/foo/bar

http://yoursite/foo/bar.php

是干净的网址。术语“干净的URL”没有指定任何特定的实现。您可以根据需要在每次更新站点时生成缓存的.html页面,从而实现干净的URL。使用mod_rewrite可以简单地使URL结构与文件结构脱钩,而无需重定向或框架。

从表面上看,您当前未在运行数据库驱动的站点。尽管从技术上讲它可以作为动态网站,但如果您主要使用PHP只是为了包含页眉/页脚,则它可能更多地处于静态范围。对于很少需要更新的小型站点来说,这很好,但是随着站点的扩大,您将需要实现一个真正的CMS。

当您开始考虑可维护性时,mod_rewrite会大放异彩。您不必为每个产品页面都有数百个php文件(带有大量冗余代码),而只需拥有一个脚本即可处理所有请求。但是,如果您不再具有实际的.php文件到显示的网页的一对一映射,那么您将需要使用mod_rewrite之类的东西来智能地路由页面请求,同时保持对文件/目录结构的幻觉。那里。

因此,这不是您应该担心的额外子目录。实际上,您正在为站点上的每个页面创建一个单独的.php脚本。


1

“干净的URL”通常意味着没有文件扩展名;它有助于从查看器中隐藏实现细节。这样的好处是,当您决定将站点从PHP迁移到Ruby on Rails时,无需更改单个URL就可以做到这一点。

现在,如果您想保持URL完整,虽然可以使用ASP.net运行您的网站并以.php结尾的文件名,但这样做似乎更有意义,因为这样就永远不会出现问题。

http://www.example.com/news/2010/10/our-new-url-system/

即使您完全更改了基础体系结构,或从静态文件转换为动态文件,也可以反过来,它始终可以是一个很好的URL。


0

在我看来,将数据库中的所有内容都变得更快,更容易维护,然后每次需要进行更新时都要挖掘大型文件系统。就像约翰·穆勒(John Mueller)上面提到的那样,漂亮的URL不会对您的排名产生太大的影响,但是,您想考虑使用Mod_Rewrite来保留现有的URL及其值。IE浏览器是否:

example.com/widgets/index.php有1,000个指向它的链接,您将其更改为example.com/pages/widgets.php可能会失去很多该值(您当然可以将其重定向,但是是否进行重定向尚有争议。是否会传递相同的值)

我的建议是,如果您要继续提供静态内容,请继续使用文件系统;如果要将其转换为动态内容,请使用Mod_Rewrite保持当前的URL结构不变。或者,如果无法维持当前结构,则可以使用Mod_Rewrite创建对以后的更新稳定的结构。


0

如前所述,拥有.php与否?page=并不重要。什么事情是,如果你正在做的事情是这样的:

http://www.example.com/index.php?page=13

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.