example.com/country/name/Koreaをexample.com/koreaに変換したい

.htaccess url-routing zend-framework zend-route
example.com/country/name/Koreaをexample.com/koreaに変換したい

タイトルがすべてを説明していると思います。 問題は、私のアプリケーションがZend Frameworkベースであり、多くのコントローラーが含まれていることです。 主なコントローラーは次のとおりです。

Companies/
People/
Countries/

最初の国のプロファイルのURLは、次のようなURLからアクセスできます。

example.com/countries/view/id/Korea

ルーターを追加して短絡させました

example.com/countries/Korea

ただし、クライアントはさらに以下を短縮する必要があります。

example.com/Korea

この場合はコントローラーの代わりにURLパラメーターである国の名前を表示します。 さらに、クライアントはすべてのURLを同様の方法で短縮する必要があるため、次のようなものを読むために使用されていた会社のURLが必要です。

example.com/companies/acme-corporation-1234

ここで、1234は次の行で何かを読み取る会社のIDです。

example.com/acme-corporation-company

似たような名前を持つ国は2つもないので、国名の一意性は理解できますが、似たような名前の会社をいくつも持つことができるので、同じことを会社で達成できるとは思いません。 Gogobot.comを調べてみたところ、サイト上のすべてのURLは非常に読みやすく、どこにも単一のID番号さえ含まれていません。

これをどのように行うか、つまりさらに短縮する方法についてのアイデアはありますか?example.com/koreaは韓国をコントローラーとしてではなく、example.com / countries / koreaおよび同様にURL example.com/countriesへのリンクとして意味しますまだ国のコントローラーへの呼び出しとして解釈する必要があります。

  2  0


ベストアンサー

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

そうすれば、各国にコントローラーを用意する必要はありませんが、それをスクリプトに渡して、IDまたは処理したいものを見つけます。

https://stackoverflow.com/questions/2130204/mod-rewrite-rewritemap-a-url-using-a-database-lookup-script/2130233#2130233 [データベース検索スクリプトを使用してURLをMod_ReWrite / ReWriteMap]

2


ZFにかなり慣れている場合は、カスタムルートクラスを使用できます。この説明を参照してください:http://tfountain.co.uk/blog/2010/9/9/vanity-urls-zend-framework(わずかに異なるそこに問題がありますが、解決策は同じです)。 あなたの場合は、企業用と国用が必要です。

0


タイトルとURLをコピーしました