无法在CI中重新路由URL

时间:2011-07-19 22:34:26

标签: php apache .htaccess codeigniter routing

我无法将可变网址段重新路由到我设置的测试控制器。我希望案例4重定向到我的测试控制器。

  

案例1(正常)转到网址   http://localhost/2fb/index.php/redirect/test

     

//输出“testing”

     

案例2(不起作用)转到URL http:// localhost / 2fb / redirect / test

     

// output“未找到请求的URL / 2fb / redirect / test   服务器“。

     

案例3(正常)转到网址http:// localhost / 2fb /

     

//输出 - >加载我的欢迎控制器。

     

案例4(不起作用)转到URL http:// localhost / 2fb / abc

     

// output“未找到请求的URL / 2fb / redirect / test / abc   服务器“。

我的routes.php文件如下所示:

$route['default_controller'] = "welcome";
$route['404_override'] = '';
$route["2fb/(:any)"] = "redirect/test";

redirect.php控制器:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Redirect extends CI_Controller {

    public function index()
    {    

    } 
    public function test()
    {
        echo "testing";                       
    } 

}

config.php:

$config['index_page'] = '';

.htaccess:

# Code Igniter Htaccess Rules
<IfModule mod_rewrite.c>
  RewriteEngine on
   # Rewrite URLs of the form 'x' to the form 'index.php/x'.
  RewriteCond %{REQUEST_URI} !=/favicon.ico
  RewriteRule ^(.*)$ index.php/$1 [L,QSA]
</IfModule>

我相信我的Apache配置是正确的,因为它考虑了.htaccess文件的存在。

2 个答案:

答案 0 :(得分:0)

也许尝试另一个htaccess:

RewriteRule ^$ /index.php [L]
RewriteCond $1 !^(index\.php|css|img|images|js|scripts|system|uploads|robots\.txt|favicon\.ico|favicon\.png)
RewriteRule ^(.*)$ /index.php/$1 [L]

你还需要:

$route["2fb/(:any)"] = "redirect/test";
你可以这样说:

$route["2fb/(:any)"] = "redirect";

$route["2fb/(:any)"] = "redirect/$1";

答案 1 :(得分:0)

固定。

  • .htaccess文件位于CI应用程序文件夹之外。

  • .htaccess文件中包含deny from all