我刚刚将我的一个静态网站升级为启用 codeIgniter 的网站。我需要将旧网站的确切域名重定向到新网站以避免 404 错误。
- 旧页面 >
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:现在根据 Michael 先生的建议,我尝试使用如下所示的重定向功能来实现它:
默认控制器功能: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 收到了错误页面。
请帮忙。