使用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'); }