0

ルーターを使用した動的 HTML リダイレクト

最初はカテゴリがなく、すべてのページがルートでした

例:

   http://domain/somepage

これは素晴らしいことでしたが、長年にわたってコンテンツが成長したため、コンテンツを分類する必要があります

だから私はいくつかのルートを追加しました//routes.php以下を参照してください

Router::connect(

"/:category/:slug",
array('controller' => 'controllername', 'action' => 'view'),
       array( 

            'name'=>'[-A-Z0-9]+', 

           'pass' => array('category','slug')



          ) 

        );

//end これはうまく機能し、必要なことを達成しましたが、検索エンジンに 1 つの問題があります。すべてのリンクに対して 301 を記述する必要があり、8K を超えるページがあります。

ソリューション Cakesphp の Router::redirect

私が今抱えている問題は、古いリンクをリダイレクトする方法がわからないことです。たとえば、すべてのリンクを 1 つのカテゴリにリダイレクトすることはできますが、それではうまくいきません。すべてのリンクを新しい場所にリダイレクトする必要があります。

routes.php ルーター :: リダイレクトを使用しようとしています

これを行うと、コードはカテゴリにリダイレクトされますが、スラッグにはリダイレクトされません

   Router::redirect(
'/:slug/*',
  array(
  'pass' => array('category/:slug'))

結果

  http://domain/category/

ケーキをリダイレクトするにはどうすればよいですか

  http://domain/category/slug  ?

  instead of  http://domain/category/

すべてのリンクがルート ディレクトリを指していました
http://domain/somepage http://domain/anotherpage http://domain/ect

カテゴリを追加する必要がありました

そのような

`
     http://domain.com/phones/samsung.php
     http://domain.com/books/cakephp.php

`

.htaccees ファイルを使いたくなかったので

私のホスティングプロバイダーは、100回のリダイレクトに制限しています

リダイレクトする必要がある 8,000 を超えるリンクがあります

routes.php ファイルで cakes router ::redirect 関数を使用しようとしています。

以下のコードは 1 つのカテゴリに対してのみ機能し、私が望むように動的には機能しません。あなたが提案したように、これを行うルータークラスを作成しようとしましたが、正直なところ、私はcakephpの専門家ではありません。簡単に習得でき、優れたフレームワークです。独自のクラスやコンポーネントを作成する方法がまだわかりません。これを行うための適切なドキュメントがまだ見つかりません。

 //routes.php

  $move='category/'. stripslashes_deep ($_SERVER['REQUEST_URI']);             Router::redirect('/:slug/*',$move, array('status' => 302)); code
4

1 に答える 1

0

最善の策は、カスタム ルート クラスを使用することです。

カスタム ルーティングは CakeRoute クラスを拡張し、渡されたパラメータを返す/追加する/変更できるようにします。

CakePHP カスタムルートクラス - 引数を渡すには?

于 2012-09-26T19:11:52.970 に答える