2011-07-22 9 views
0


私は医療用品の検索サイトを開発しています。ユーザーが[COMPANY NAME]の薬[病気]を検索しようとするたびに、検索エンジンに自分のサイトを表示する必要があります。このため、私は自分のサイトでURLからCOMPANY NAMEとDISEASEを読み込み、すべての製品をリストするページを作成しました。SEO用CakephpのURLのカスタマイズ

は今、私は開発のためのCakePHPのフレームワークを使用しています。このページにwww.sitename.com/[COMPANY NAME] _medicine_ [DISEASE]のようなURLを与えること
を.HTML必要です。 routes.phpにこのURLフォーマットを実装するにはどうしますか?それとも他の方法がありますか?助けてください。

答えて

4

スラッシュで区切りますか?

// www.sitename.com/[COMPANY NAME]/medicine/[DISEASE] 

Router::connect('/:company/medicine/:disease', array('controller' => 'diseases', 'action' => 'index'), 
               array('pass'=>array('company','disease'), 
               'company'=>"[a-zA-Z\.]+*", 
               'disease'=>'[a-zA-Z\.]+')); 

と私はあなたの代わりにスラッシュのアンダースコアを使用することができるかどうかわからないんだけど、コントローラ

function diseases($company,$disease){ 

} 

は、私が前にそれを試したことがありません。あなたはEDITED私は)=の結果を知ることが

グッドラック

を希望しようとしない場合:[OK]を、私はこの問題についてあまりにも興味があったと私はこの

Router::connect('/:company_medicine_:disease', array('controller' => 'pages', 'action' => 'test'), 
               array('pass'=>array('company','disease'), 
               'company'=>'[a-zA-Z]+', 
               'disease'=>'[a-zA-Z]+')); 
のようなルートを書きました

と私は疑いのように、そのはu_U

を働いていない、問題はケーキがcustom route elementの名前は/ REAに関する数分後... :company_medicineない:companyであると考えているということですCakeのコードを引用すると、Cakeがルートを解析し、渡された要素の名前を抽出する正確な場所が見つかりました。あなたは、正規表現中の名前を見ることができるように

preg_match_all('#:([A-Za-z0-9_-]+[A-Z0-9a-z])#', $parsed, $namedElements); 

:それはクラスで/cake/libs/router.php(ライン1369程度)CakeRoute、方法_writeRoute()です要素はアンダースコアを含むことができるので、Cakeはパラメータの名前を ":company_medicine"と考えます。 だから、4つの解決している:それはmedicine_[COMPANY]_[DISEASE]

  • から router.php のライン1369を修正するだろうので、使用は、あなたのURLのセパレータ

  • 変化としてごパラメータの順序を

    • をスラッシュこの(お奨めしないで、私はそれはプラグインのルートを破るだろうと思う):

      preg_match_all('#:([A-Za-z0-9]+)#', $parsed, $namedElements);

    • はあなたの.htaccessでurlリライトを使用して[COMPANY]_medicine_[DISEASE][COMPANY]/medicine/[DISEASE]にリダイレクトするので、ケーキにはスラッシュで区切られて表示され、ブラウザーには区切られた下線が表示されます。 (私はそれをテストしていない、私はケーキ= Pの.htaccessに別のルールを追加したことがない)

  • 関連する問題