htaccessCodeigniterで301をリダイレクトする

Jul 20 2020

CIで301リダイレクトを行う方法は?CIで新しいWebサイトを作成していますが、URL構造が少し異なる以前のバージョンのWebサイトから301リダイレクトを実行したいので、htaccessの最も重要なサブページをリダイレクトしたかったのですが、 htaccessは私には機能しません、routes.phpのエントリのためだと思います

$route['(:any)/(:any)/(:num)'] = 'ads/cat/$1/$2/$3';
$route['(:any)/(:any)'] = 'ads/cat/$1/$2'; $route['(:any)'] = 'ads/cat/$1';

と私のhtaccessファイル

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]

たとえばリダイレクトしたい

RewriteRule ^oldcat1/oldcat2/oldcat3/ http://localhost/newcat1/newcat2 [R=301,L]

しかし、このリダイレクトは機能しません。これにどう対処するか?

回答

2 MrWhite Jul 20 2020 at 05:32

CodeIgniterフロントコントローラーにリクエストを送信する既存のディレクティブの前に外部リダイレクトを配置する必要があります。そうしないと、それらは単に処理されません。

例えば:

# External redirects
RewriteRule ^oldcat1/oldcat2/oldcat3/ http://localhost/newcat1/newcat2 [R=301,L]

# Front-controller
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]

これは、が呼び出される前に.htaccess処理される ため、CodeIgniterで定義した可能性のあるルートとは何の関係もありませんroutes.php