4

我在 Magento 中创建了一个新模块并将其命名为“文章”。它有两个前端控制器索引和文章。

在文章控制器中,我有一个名为“归档”的操作,用于根据归档列出前端/网站上的文章。一切都很好,除了网址。

现在的工作 URL 是:[http://]mydemostore/article/article/archives/01/2011

我真正需要的是 http://mydemostore/article/archives/01/2011

我不想有额外的“文章”(控制器名称)

我知道,因为我的模块名称和控制器名称相同,所以我得到了这个。如果我将我的操作放在 indexcontroller 中,我就会完成这项工作。但它不起作用。

所以我现在需要的是我不想将我的操作从“文章”移动到“索引”控制器,而我只想改变

[http://]mydemostore/article/article/archives/01/2011 到

[http://]mydemostore/article/archives/01/2011

在 .htaccess 文件上使用 Zend 路由或基本 PHP URL 重写。

请帮助我如何通过使用这两种方式中的任何一种或两种方式来完成这项工作。

非常感谢您提前检查我的问题!

4

4 回答 4

3

我自己没有这样做,只是在这里阅读但这里有......

在您的 config.xml 文件中:

<config>
    <global>
        <rewrite>
            <article_article_archives>
                <from><![CDATA[#^/article/archives/#]]></from>
                <to><![CDATA[/article/article/archives/]]></to>
            </article_article_archives>
        </rewrite>
    </global>
</config>

该节点<article_article_archives>不是严格形成的,它只需要在其他重写中是唯一的。

于 2011-01-22T15:54:04.197 回答
0

好吧,如果您的模块中有多个控制器,您可能不会对此选项持开放态度,但这是一个有效的解决方案,无需在 .htaccess 等中创建额外的重写规则。可以使用IndexController.php 而不是 ArticleController.php。然后您可以使用 [http://]mydemostore/article/archives/01/2011.... 访问页面,其中 archivesAction() 是 IndexController.php 中的一个方法。Magento 自动将 IndexController.php 映射到 /yourmod/index/ 或只是 /yourmod/。

于 2011-02-04T15:00:45.910 回答
0

.htaccess 中的类似内容

RewriteEngine On
RewriteRule ^(article/)* article/ [L]

可能会删除重复项,但我不会选择它

重复的更一般情况:

RewriteEngine On
RewriteRule ^([^/]+/)* $1 [L]
于 2011-01-22T16:38:21.890 回答
0

好吧,如果您的模块中有多个控制器,您可能不会对此选项持开放态度,但这是一个有效的解决方案,无需在 .htaccess 等中创建额外的重写规则。可以使用IndexController.php 而不是 ArticleController.php。然后您可以使用 [http://]mydemostore/article/archives/01/2011.... 访问页面,其中 archivesAction() 是 IndexController.php 中的一个方法。Magento 自动将 IndexController.php 映射到 /yourmod/index/ 或只是 /yourmod/。


不幸的是,mydemostore/article/archives/01/2011不会引用IndexController->archivesAction, 但这 archivesController->01Action会导致错误,因为 PHP 中的方法/函数只能以下划线或字母开头。

但是,以下 url 将引用提到的控制器-动作对:

  • mydemostore/文章/索引/档案/
  • mydemostore/文章//档案/

关于最初的问题,在其中保存程序化 URL 重写Magento将是最佳实践,但不一定是最实用或最快的实现;当然,Apache 指令(例如 .htaccess 或站点 conf 文件)将是最快但不是最遵守最佳实践的。

于 2012-05-30T19:46:07.780 回答