Magento如何解析URL?

3
我们使用的是django,在django中有一个名为urls.py的文件,其中列出了所有可能的url模式。因此,我们想知道当我打开网址http://localhost/magento/index.php/test123.html时,它将如何映射到产品,并且我可以检查哪个文件。
1个回答

3

Magento有多种匹配URL的方式。模块可以注册自己的模式,一般是/module/controller/action的形式。

此外,CMS页面有URL标识符,可以随意设置,可以包含/以给出层次结构的假象,但它们并不重要。

最后,类别和产品有URL标识符,并且有一个完整的URL重写表,将路径(例如/[category]/[subcategory]/[product])映射到产品。在您的示例中,我猜测产品的URL标识符是“test123”,并且商店设置为在URL后缀'.html'。

因此,在这种情况下,没有文件可查看,而是需要查看数据库/管理区域。


谢谢 Greg,我检查了 app/code/core/Mage/Catalog/controllers/ 目录下,我找到了文件 ProductController.php。我查看了这个文件,但是并没有从中得到任何想法。我只是在寻找该类中的入口函数。也就是说,他们在这个类中解析URL的地方。例如,如果我们提供URL localhost/index.html/test123.html,则他们必须获取test123.html,并从中删除 .html ,然后在数据库中搜索 test123 产品,并返回该数据及其模板。如果可能,请给我这个类中的入口点。他们在这个文件 ProductController.php 中如何获取此URL并进行解析。 - Nilesh
从我的记忆中,这个文件应该是app/code/core/Mage/Catalog/Controller/Router.php...它在某个地方,也许是在Controller下的另一个文件夹里?这个文件和CMS路由器以及其他可能被注册的路由器会依次被调用,直到其中一个告诉前端控制器它将要处理一个URL,然后相应的控制器动作方法就会被调用。不过这不是你通常需要去处理的东西...你是想解决一个问题,还是只是好奇? - Greg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接