这是mod_rewrite的工作吗?

时间:2013-11-21 17:23:01

标签: php .htaccess mod-rewrite

我正在帮助某人尝试清理他们建立但未完全完成的网站的网址。它使用VPS主机上基于PHP / MySQL构建的自定义CMS。最初的开发人员是AWOL,他们没有达到的最后一件事就是修复网址更加友好。

该网站适用于PA / NJ的多栋公寓楼的公寓管理公司:

http://yourmetropolitan.com/

在网站的页脚中是指向各个公寓详细信息页面的链接(请注意,部分公寓建筑仅在他们所在的城镇之后命名)。网址看起来像:

http://www.yourmetropolitan.com/welcome/feature_details/doylestown/9/7/Bucks_County/Doylestown/Pennsylvania/doylestown/3

我们希望看到以下内容: http://www.yourmetropolitan.com/apartments/pennsylvania/bucks_county/doylestown/doylestown (再次,第一个doylestown是因为这是城镇的名称,第二个是因为它是公寓楼本身的名称)

因此,您可以看到几乎所有网址片段都存在,但我们需要重新排列它们并隐藏其中一些丑陋的ID号码。

此外,还有一些页面可以从像公寓一样组成的面包屑中找到,例如:

http://www.yourmetropolitan.com/welcome/feature/Montgomery_County/Narberth/17/Pennsylvania/Narberth/27为您提供Narberth镇的两座建筑。我们也希望清理它。

我想我要问的是,这看起来是用mod_rewrite清理的东西还是更改生成这些长丑陋网址的代码?

我见过的关于mod_rewrite的所有内容都会处理包含像example.php / user?id = 100这样的查询字符串但不会像这样移动网址段的网址。

如果是mod_rewrite,如果有任何超级好的人想让​​我开始使用一些Regex,我真的很感激。但是,我知道这是强制性的“你有什么尝试?”答复。我完全理解。

1 个答案:

答案 0 :(得分:1)

这看起来像两个问题:

Q1)我可以使用mod_rewrite来帮助我清理这些网址吗?

Q2)如果是这样,我将如何做到这一点?

我会回答:

A1)是的,mod_rewrite可以提供帮助。但是要重新设计URL,您还需要修改应用程序代码。虽然mod_rewrite非常适合将传入的HTTP请求映射/分配到一个漂亮的逻辑结构到现有(尽管可能是不可爱的)可访问资源/端点集上,它无助于您的应用程序在其HTTP响应中发出具有良好逻辑结构的URL。您将需要修改在应用程序中呈现出站URL的代码,或者将自己的“出站URL重写层”添加到应用程序(在发送之前,它会破坏您的HTTP响应以符合您的新方案)。 / p>

A2)首先正式定义您当前/现有的网址架构以及您要实施的新架构。我喜欢画画,有些人喜欢使用文字,但我的建议是在之前有一些合乎逻辑的东西,你可以深入了解正则表达式和mod_rewrite的神秘细节。这样可以更容易地提出连贯的问题,如果&当你遇到麻烦,并帮助你避免浪费时间在一个思想不周的计划(如任何软件开发项目)。在线发布了 lot mod_rewrite示例,并且模块文档得到了很好的维护。