如何在CI中执行301重定向?我正在CI中创建一个新网站,我想从早期版本的网站进行301重定向,那里的URL结构看起来有点不同,所以我想重定向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]
但是这个重定向不起作用。如何处理?
您需要确保将外部重定向放置在将请求发送到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]
这与您可能在CodeIgniter中定义的路由无关,因为.htaccess
是在调用routes.php
之前处理的。