4

Magentoで新しいモジュールを作成し、「記事」という名前を付けました。2つのフロントエンドコントローラーのインデックスと記事があります。

そして、記事コントローラーには、アーカイブに基づいてフロントエンド/Webサイトの記事を一覧表示する「アーカイブ」と呼ばれるアクションがあります。URL以外は​​すべて問題ありません。

現在の作業URLは次のとおりです:[http://] mydemostore / article / article / archives / 01/2011

私が実際に必要としているのは http:// mydemostore / article / archives/01/2011です

余分な「記事」(コントローラー名)は必要ありません

モジュール名とコントローラー名が同じなので、これを取得しています。アクションをインデックスコントローラー内に配置したとしたら、これは実行されたはずです。しかし、それは機能していませんでした。

したがって、今必要なのは、アクションを「記事」コントローラーから「インデックス」コントローラーに移動したくないということです。変更したいだけです。

から

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

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

Zendルーティングまたは.htaccessファイルでの基本的なPHPURL書き換えを使用します。

これらの2つの方法のいずれか、または両方の方法を使用して、これを実行する方法を教えてください。

私の質問をチェックしてくれてありがとう!!!

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 などに追加の書き換えルールを作成することなく有効なソリューションです。 ArticleController.php の代わりに IndexController.php。その後、[http://]mydemostore/article/archives/01/2011... でページにアクセスできます。ここで、archivesAction() は IndexController.php のメソッドです。Magento は IndexController.php を /yourmod/index/ または単純に /yourmod/ に自動的にマップします。

于 2011-02-04T15:00:45.910 に答える
0

モジュールに複数のコントローラーがある場合、このオプションを受け入れないかもしれませんが、.htaccess などに余分な書き換えルールを作成することなく有効なソリューションです。 ArticleController.php の代わりに IndexController.php。その後、[http://]mydemostore/article/archives/01/2011... でページにアクセスできます。ここで、archivesAction() は IndexController.php のメソッドです。Magento は IndexController.php を /yourmod/index/ または単純に /yourmod/ に自動的にマップします。


残念ながら、mydemostore/article/archives/01/2011は を参照しませんIndexController->archivesActionarchivesController->01Action、PHP のメソッド/関数はアンダースコアまたは文字でしか開始できないため、エラーが発生します。

ただし、次の URL は、前述のコントローラーとアクションのペアを参照します。

  • mydemostore/記事/インデックス/アーカイブ/
  • mydemostore/記事//アーカイブ/

元の質問に関しては、プログラムによる URL の書き換えを内部に保存Magentoすることがベスト プラクティスですが、実装が最も実用的または最速であるとは限りません。もちろん、Apache ディレクティブ (.htaccess やサイトの conf ファイルなど) は最も高速ですが、ベスト プラクティスを順守しているわけではありません。

于 2012-05-30T19:46:07.780 に答える
0

.htaccessのこのようなもの

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

重複を削除することはできますが、選択しません

重複のより一般的なケース:

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