静的 Web サイトの 1 つを codeIgniter 対応の Web サイトにアップグレードしました。404 エラーを回避するために、古い Web サイトの正確なドメイン名を新しい Web サイトにリダイレクトする必要があります。
- 古いページ >
http://example.com/pagename.php
- 新しいページ >
http://example.com/index.php/home/category_images/9(cat_id)
私は非常に高いノーをしません。すべてのページを直接ハードコーディングすることは問題になりません。私が試してみました :
RewriteEngine On
RewriteBase /
RewriteRule ^http://www.example.com/pagename.php$ http://example.com/index.php/home/category_images/9 [L,R=301]
機能していません。理由がわかりません。mod_rewrite
私のApacheサーバーで有効になっています。
また、確認のため、このファイルをどのフォルダに置くべきか教えてください。ルート ディレクトリとアプリケーション フォルダの間で混乱しています。
ありがとうございました。
バージョン 2: マイケル氏からの提案の後、次のようなリダイレクト機能を使用して実装しようとしました:
デフォルトのコントローラ関数: home.php
function __construct()
{
// Call the Model constructor
parent::__construct();
$this->load->model('common_model');
$this->handle_redirects();
}
function handle_redirects ()
{
$redirects = Array(
'gorgeous-girls.php' => 'home/category_images/9'
);
$uri = implode('/', $this->uri->segments);
foreach ($redirects as $from => $to)
{
$from = str_replace(':any', '.+', str_replace(':num', '[0-9]+', $from));
if (preg_match("#^{$from}$#i", $uri))
{
if (strpos($to, '$') !== false and strpos($from, '(') !== false)
$to = preg_replace("#^{$from}$#i", $to, $uri);
redirect($to , 'location', 301);
}
}
}
そして、私の .htaccess は次のようになります:
RewriteEngine On
RewriteBase /
RewriteCond $1 !^(index.php|resources|robots.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/$1 [L]
PS : ドメイン名構造から index.php を削除しました。次のようになります: www.example.com/controller/function/uri/uri
現在、ホストからエラー ページを取得していませんが、CodeIgniter からエラー ページを取得しています。
助けてください。