Web系のこととかー。

ちょっとした自分用メモレベルで失礼。

HTTPステータスコードが404 Not Foundのページを、301 Moved Permanentlyでトップページにリダイレクトをかける方法は、下記のようにmod_rewriteを使えば簡単にできるのだけど、CakePHPの場合はwebrootディレクトリ直下の.htaccessで、同様のことをindex.phpにパラメータを渡して、例のURLを実現しているので使えない。

シンプルなやり方

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ / [R=301,L]

CakePHP用

appディレクトリ直下に error.php を作成し、404の時にheader()で301リダイレクトをかけるだけ。

class AppError extends ErrorHandler {

	function error404() {
		header("HTTP/1.1 301 Moved Permanently");
		header("Location: http://www.example.com/");
	}

}

本当は、素直に404 Not Found専用のページを作るのが良いんだけど、案件によって必要だったので。

§302 · 2月 17, 2011 · CakePHP, プログラミング_PHP, 技術その他 · · [Print]

Leave a Reply