htaccessCodeigniterで301をリダイレクトする
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
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
。