0

質問:codeigniterで古いURLからseoフレンドリーなURLに移動するにはどうすればよいですか?

例:libraryというcodeigniterコントローラーがあります。URLはwww.domain.com/libraryのようになります

これはSEOに適していません。www.domain.com/keyword-libraryのように見せたいのですが、どうすれば修正できますか?.htaccessとルーティングでは不十分です。古いページを301で新しいURLにリダイレクトする必要があるため、検索エンジンがこれを取得します。

4

1 に答える 1

2

application / config / routers.phpを使用して、新しいURLクエリを古いコントローラーオブジェクトに再ルーティングします

$route['keyword-library/(:any)/(:any)/(:any)/(:any)/(:any)'] = "library/$1/$2/$3/$4/$5"; 
$route['keyword-library/(:any)/(:any)/(:any)/(:any)'] = "library/$1/$2/$3/$4"; 
$route['keyword-library/(:any)/(:any)/(:any)'] = "library/$1/$2/$3"; 
$route['keyword-library/(:any)/(:any)'] = "library/$1/$2"; 
$route['keyword-library/(:any)'] = "library/$1"; 
$route['keyword-library'] = "library"; 

次に、他のコードが実行される前に/index.phpファイルにこれを追加して、古いページを新しいページに再ルーティングします。

$uri = $_SERVER['REQUEST_URI'];
if(strpos($uri,'/library') === 0)
    {
    $expl = explode('/library',$uri);   
    //array_shift($expl);
    $query = implode('',$expl);
    $redirect= "https://".$_SERVER['HTTP_HOST'].'/orthomoleculaire-bibliotheek'.$query;
    header( "Status: 301 Moved Permanently" );
    header("Location: $redirect");
    exit(0);
    }

これに.htaccessを使用してみましたが、変数と変数の長さが変更されたため、何らかの理由で古いURLを301の新しいURLに再ルーティングすることができませんでした。

もっとエレガントな解決策を知っている人がいたら、私はそれを見つけることができなかったので、それを投稿してください。

于 2012-07-17T09:27:48.783 に答える