【问题标题】:Redirect 301 in htaccess Codeigniter在 htaccess Codeigniter 中重定向 301
【发布时间】:2020-07-19 18:46:16
【问题描述】:

如何在 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]

但是这个重定向不起作用。如何处理?

【问题讨论】:

    标签: php .htaccess codeigniter redirect url-routing


    【解决方案1】:

    您需要确保将外部重定向放置在将请求发送到 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 被调用。

    【讨论】:

      猜你喜欢
      • 2013-01-09
      • 2011-05-01
      • 2011-01-03
      • 2012-03-10
      • 2021-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多