在 htaccess Codeigniter 中重定向 301
Redirect 301 in htaccess Codeigniter
如何在 CI 中进行 301 重定向?我正在 CI 创建一个新网站,我想从网站的早期版本进行 301 重定向,其中 URL 结构看起来有点不同,所以我想重定向最重要的子页面在 htaccess 中,但 htaccess 中的常规规则对我不起作用,我想是因为 routes.php
中的条目
$route['(:any)/(:any)/(:num)'] = 'ads/cat///';
$route['(:any)/(:any)'] = 'ads/cat//';
$route['(:any)'] = 'ads/cat/';
和我的 htaccess 文件
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/ [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?/ [L]
这与您可能在 CodeIgniter 中定义的路由没有任何关系,因为 .htaccess
在 在 routes.php
被调用之前被处理。
如何在 CI 中进行 301 重定向?我正在 CI 创建一个新网站,我想从网站的早期版本进行 301 重定向,其中 URL 结构看起来有点不同,所以我想重定向最重要的子页面在 htaccess 中,但 htaccess 中的常规规则对我不起作用,我想是因为 routes.php
中的条目$route['(:any)/(:any)/(:num)'] = 'ads/cat///';
$route['(:any)/(:any)'] = 'ads/cat//';
$route['(:any)'] = 'ads/cat/';
和我的 htaccess 文件
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/ [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?/ [L]
这与您可能在 CodeIgniter 中定义的路由没有任何关系,因为 .htaccess
在 在 routes.php
被调用之前被处理。