2011-06-26 11 views
2

タイトルはすべてそれを説明していると思います。私のアプリケーションはZend Frameworkベースであり、多数のコントローラが含まれています。メインコントローラは、次のとおりです。example.com/country/name/Koreaをexample.com/koreaに変更したい

example.com/countries/Korea 

しかしクライアントにルータを追加することにより、

example.com/countries/view/id/Korea 

私はそれをショート:

Companies/ 
People/ 
Countries/ 

最初の国は、URLのようなURLを介してアクセスまし可能性プロファイルさらに短縮する必要があります。

example.com/Korea 

この場合は、コントローラーの代わりにurlパラメーターである国の名前を指定します。プラスのクライアントは、すべてのURLがそのように、同様の方法でのようなものを読み取るために使用される会社のURLを短縮することが必要です:

1234の行に何かを読み取るために、会社のIDです
example.com/companies/acme-corporation-1234 

example.com/acme-corporation-company 

似た名前を持つ2つの国がしかし、私はあなたが似た名前を持つ企業の数を持つことができるよう、私は会社のために同じことを達成することができます疑いがないように私は、国の名前の一意性を理解することができます。私はGogobot.comをチェックし、サイトのすべてのURLが本当に読みやすく、どこにでも単一のID番号を含めないことに気づいた。

これはもっと短くすることができるので、example.com/koreaは韓国をコントローラとしてではなく、example.com/countries/koreaおよびURLの例へのリンクとして意味します.com/countriesは、依然として国の統制官への呼び出しとして解釈されるべきである。

答えて

2

ポスターと同様の問題をご覧ください。 ApacheのRewriteMapを使用してURLを外部スクリプトにマップし、そのコードに基づいてリクエストを処理することができます。

こうすれば、各国のコントローラを持つことを心配する必要はありませんが、スクリプトに渡してIDや処理したいものを見つけることができます。

Mod_ReWrite/ReWriteMap a URL using a database lookup script

0

あなたはZFと合理的に快適にしている場合は、このためにカスタムルートクラスを使用してこの説明を見ることができます:http://tfountain.co.uk/blog/2010/9/9/vanity-urls-zend-framework(そこにわずかに異なる問題が、解決策は同じです)。あなたのケースでは、会社と国のための1つが必要になります。

関連する問題