このURL構造は、SEO最適化のために提案されています。したがって、別の構造を提案しても機能しません。提案された構造は
example.com/<language>/<country>/<province>/<city>/<product>
example.com/en/spain
それぞれの見方が違うので、指摘したいCountryController
indexAction
のですが、レイアウトにも変化があると思うこともあります。
スペインの国についてのコンテンツを英語で表示します。また、リクエストにexample.com/en/india
は、インドについて英語でexample.com/es/spain
表示し、スペインの国のスペイン語のページを表示する必要があります。
example.com/en/spain/barcelona
に指差すCountryController
provinceAction
スペインのバルセロナ県の英語のコンテンツページ。
example.com/en/spain/barcelona/barcelona
に指差すCountryController
cityAction
スペイン国バルセロナ県のバルセロナ市のコンテンツページ(英語)。
example.com/en/spain/barcelona/barcelona/taxis
に指差すCountryController
productAction
スペイン国バルセロナ県バルセロナ市の製品のコンテンツページ(英語)。
はい、次のようなルートを追加できます
$router = $ctrl->getRouter();
$router->addRoute(
'country_spain',
new Zend_Controller_Router_Route('spain',
array('controller' => 'country',
'action' => 'index'))
);
ただし、この場合、国のリスト全体をルートに追加する必要があります。すなわち、インド、中国、パキスタン、米国など。
次に、country_provinceを追加します
$router = $ctrl->getRouter();
$router->addRoute(
'country_spain_barcelona',
new Zend_Controller_Router_Route('spain',
array('controller' => 'country',
'action' => 'province'))
);
したがって、50の州がある場合、国の数にその国の州の数を掛けたものを加算するのは恐ろしいことであり、これは都市や製品に移動するときに、より多くのルートになります。
あなたは次のようなものを追加すると言うかもしれません
$router = $ctrl->getRouter();
$router->addRoute(
'country',
new Zend_Controller_Router_Route('country/:country/:province/:city/:product',
array('controller' => 'country',
'action' => 'index'))
);
しかし、この場合は同じアクションを指しているようですが、リクエストのビューが変わると、これはファットコントローラーになります。
Zend_Controller_Router_Route_Regexの問題は、次のようなものが必要
example.com/en/country/spain/barcelona/barcelona/taxis
であり、すべてが1つのアクションに移動することです。見た目が全然違うので汚れてしまいます。私が使用できるパーシャルのようなものかもしれません。しかし、これを解決するための問題に対する別の良い解決策があるかどうか疑問に思います。これはレガシープロジェクトなので、制限があり、#ZFバージョンは1.6です。
似たような例があります
http://www.travelportal.info/ http://www.travelportal.info/asia http://www.travelportal.info/asia/india http://www.travelportal.info/asia/india/business-通貨経済
彼らはこれをどのように行ったと思いますか、彼らは少なくともアジア、ヨーロッパのためにそのようなルートを追加しましたか?
私はそれを次のように機能させることができました
example.com/en/spain
を指していますCountryController
indexAction
example.com/en/spain/barcelona
を指していますCountryController
provinceAction
example.com/en/spain/barcelona/barcelona
を指していますCountryController
cityAction
example.com/en/spain/barcelona/barcelona/taxis
を指していますCountryController
productAction
しかし、そこに4つのルートを追加する必要があり、このようなルートを手動で追加するのは難しくなります。
それをより良くするための提案や批判は大歓迎です。