【发布时间】:2013-05-23 09:40:57
【问题描述】:
我有一个不使用友好 URL 的网站,我想更改它。到目前为止,我的链接是这样的http://www.example.com/?l=EN&m=o36ASkkEVi,其中l 变量包含查看语言,m 包含查看类别(菜单)。因为菜单项的 id 是唯一的,所以到目前为止我没有遇到任何问题,即使它是子菜单项。但现在我试图将其更改为友好 URL,我遇到了以下问题:
首先,菜单项的友好标题不是唯一的,因为(至少在我的项目中)不同的主菜单项中可以有多个具有相同标题的子菜单项(类别)。例如,两个菜单项Camera 和Mobile Phone 都有一个名为Instructions 的子菜单。所以我的目标是让最终的友好 URL 类似于 http://www.example.com/EN/Mobile-Phone/Instructions 和 http://www.example.com/EN/Camera/Instructions。
其次,菜单的“深度”没有预定义。因此,一个类别(菜单)可能有无限的子类别。
过去,对于小型网站,我使用 htaccess 的静态重写(每个重定向一个规则),但现在,文章和类别不可数,我不能这样做。我想在每篇文章或菜单创建和编辑时重写 .htaccess 文件,以便为每种情况制定规则,但我想在某些时候这会产生巨大的 .htaccess。该解决方案是否合法?
我的问题是这样的。如何在 .htaccess 中制定规则以始终将我发送到 index.php,而不是在我编写 http://www.example.com/EN/Camera/Instructions 时尝试查找网站的子文件夹但保持 URL 对 PHP 是“可见的”?
我知道之后我可以使用explode('/', $_SERVER['REQUEST_URI']) 并通过从数据库中选择正确的语言和文章或菜单来实现我的目标,但我不知道或无法弄清楚如何做第一部分。
另外,.htaccess 有没有什么方法可以让我得到http://www.example.com/ 之后的所有项目,比如数组,并将其作为变量传递给index.php?
【问题讨论】:
标签: php .htaccess friendly-url