我正在帮助某人尝试清理他们建立但未完全完成的网站的网址。它使用VPS主机上基于PHP / MySQL构建的自定义CMS。最初的开发人员是AWOL,他们没有达到的最后一件事就是修复网址更加友好。
该网站适用于PA / NJ的多栋公寓楼的公寓管理公司:
在网站的页脚中是指向各个公寓详细信息页面的链接(请注意,部分公寓建筑仅在他们所在的城镇之后命名)。网址看起来像:
我们希望看到以下内容: 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,我真的很感激。但是,我知道这是强制性的“你有什么尝试?”答复。我完全理解。
答案 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示例,并且模块文档得到了很好的维护。