2011-01-22 198 views
4

我在Magento中創建了一個新模塊並將其命名爲「文章」。它有兩個前端控制器索引和文章。Magento模塊的URL重寫

而在文章控制器中,我有一個名爲「檔案」的操作,根據檔案列出前端/網站上的文章。除了URL之外,一切都很好。

工作URL現在的問題是:HTTP://] mydemostore /條/條/檔案館/ 01/2011

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

我不希望有一個額外的「文章」(控制器名稱)

我知道,因爲我的模塊名稱和控制器名稱是相同的我得到這個。如果我將自己的行爲置於indexcontroller中,我會完成這項工作。但它不起作用。

所以我現在需要的是我不希望從移動我的行動「的文章」到「指數」控制器,而我只是想改變

[HTTP://] mydemostore /條/條/檔案/ 01/2011到

[HTTP://] mydemostore /條/檔案/ 01/2011

使用Zend路由或鹼性PH P在.htaccess文件上重寫URL。

請幫助我如何通過使用這兩種方式或兩種方式來完成這項工作。

非常感謝我的問題檢查!

回答

3

我沒有這個做我自己,只有瞭解它here,但在這裏不用...

在你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>不嚴格形成,它只需要從其他重寫中唯一。

+0

我很好奇這個非htaccess選項......我認爲這個標籤更專注於重寫和覆蓋代碼文件,對嗎?不是網址路徑?無論如何,這似乎並不奏效。 – thaddeusmt 2011-04-12 17:57:59

0

像這樣的事情在.htaccess

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

可以去除重複,但我不會選擇它

的副本更一般的情況:

RewriteEngine On 
RewriteRule ^([^/]+/)* $1 [L] 
0

嗯,你如果你的模塊中有幾個控制器,可能不會打開這個選項,但它是一個有效的解決方案,不需要在你的.htaccess中創建額外的重寫規則等。可以設置你的「ar ticles「模塊與一個IndexController.php,而不是一個ArticleController.php。然後,您可以使用[http://] mydemostore/article/archives/01/2011 ....訪問這些頁面。其中archivesAction()是IndexController.php中的一個方法。 Magento自動將IndexController.php映射到/ yourmod/index /或僅僅是/ yourmod /。

0

好吧,你可能不開放這個選項,如果你有你的模塊中的多個 控制器,但沒有 在你的.htaccess建立額外的重寫規則一個有效的解決方案等,這是可能的 到使用ArticleController.php設置您的「articles」模塊,而不是使用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方法/功能只能用下劃線或字母開頭。

然而,下面的網址將指提到的控制器操作對:

  • mydemostore /條/索引/檔案/
  • mydemostore /條//檔案/

關於原始問題,在Magento內保存程序化URL重寫將是最佳實踐,但不一定是 最實用或最快實施;當然,Apache指令(例如.htaccess或site conf文件)將是最快的,但不是最好的最佳實踐。