使用CodeIgniterredirect

任何人都可以告诉我为什么我的redirect帮手不按照我所期望的方式工作? 我试图redirect到我的主控制器的索引方法,但它需要我www.mysite.com/index/provider1/时,它应该路由到www.mysite.com/provider1 。 这对任何人都有意义吗? 我有在configuration设置为空白的索引页面,虽然我不认为这是问题。 有没有人有如何解决这个问题的build议? 提前致谢!

控制器

 if($provider == '') { redirect('/index/provider1/', 'location'); } 

.htaccess

 RewriteEngine on RewriteCond %{REQUEST_URI} !^(index\.php|files|images|js|css|robots\.txt|favicon\.ico) RewriteCond %{HTTP_HOST} ^mysite.com/ttnf/ RewriteRule (.*) http://www.mysite.com/ttnf/$1 [R=301,L] RewriteBase /ttnf/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L] php_flag display_errors On 

redirect()

url助手


代码点火器中的redirect语句使用redirect头语句将用户发送到指定的网页。

该语句驻留在以下面的方式加载的URL助手中:

 $this->load->helper('url'); 

redirect函数加载在函数调用的第一个参数中指定的本地URI,并使用configuration文件中指定的选项构build。

第二个参数允许开发者使用不同的HTTP命令来执行redirect“位置”或“刷新”。

根据Code Igniter文档:“位置更快,但在Windows服务器上,它有时会成为问题。”

例:

 if ($user_logged_in === FALSE) { redirect('/account/login', 'refresh'); } 

如果你的目录结构是这样的,

 site application controller folder_1 first_controller.php second_controller.php folder_2 first_controller.php second_controller.php 

而当你打算把它redirect到你正在工作的同一个控制器时,只需写下面的代码。

  $this->load->helper('url'); if ($some_value === FALSE/TRUE) //You may give 0/1 as well,its up to your logic { redirect('same_controller/method', 'refresh'); } 

如果你想redirect到另一个控件然后使用下面的代码。

 $this->load->helper('url'); if ($some_value === FALSE/TRUE) //You may give 0/1 as well,its up to your logic { redirect('folder_name/any_controller_name/method', 'refresh'); } 

如果你想redirect以前的位置或最后一个请求,那么你必须包含user_agent库:

 $this->load->library('user_agent'); 

然后在最后使用你正在使用的函数:

 redirect($this->agent->referrer()); 

它为我工作。

这是隐藏索引文件的.htacess文件

 #RewriteEngine on #RewriteCond $1 !^(index\.php|images|robots\.txt) #RewriteRule ^(.*)$ /index.php/$1 [L] <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / # Removes index.php from ExpressionEngine URLs RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC] RewriteCond %{REQUEST_URI} !/system/.* [NC] RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,NE,L] # Directs all EE web requests through the site index file RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L] </IfModule> 

首先,你需要加载这种types的URL助手,或者你可以在autoload.php文件中上传:

 $this->load->helper('url'); if (!$user_logged_in) { redirect('/account/login', 'refresh'); }