65

谁能告诉我为什么我的重定向助手不能按我期望的方式工作?我正在尝试重定向到我的主控制器的 index 方法,但是www.mysite.com/index/provider1/当它应该路由到www.mysite.com/provider1. 这对任何人都有意义吗?我将配置中的索引页面设置为空白,尽管我认为这不是问题。有人对如何解决此问题有建议吗?提前致谢!

控制器

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
4

5 回答 5

156

重定向()

网址助手


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

该语句位于 URL 帮助程序中,该帮助程序以下列方式加载:

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

重定向函数加载在函数调用的第一个参数中指定的本地 URI,并使用配置文件中指定的选项构建。

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

根据 Code Igniter 文档:“定位速度更快,但在 Windows 服务器上有时可能会出现问题。”

例子:

if ($user_logged_in === FALSE)
{
     redirect('/account/login', 'refresh');
}
于 2009-04-07T11:27:08.050 回答
5

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

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

当您要将它重定向到您正在工作的同一控制器中时,只需编写以下代码。

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

如果您想重定向到另一个控件,请使用以下代码。

$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');
}
于 2014-12-20T09:45:09.500 回答
5

首先,您需要加载这种类型的 URL 帮助程序,或者您可以在 autoload.php 文件中上传:

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

if (!$user_logged_in)
{
  redirect('/account/login', 'refresh');
}
于 2017-07-20T21:02:03.337 回答
4

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

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

然后最后在您正在使用的函数中使用:

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

它为我工作。

于 2016-09-28T07:19:42.500 回答
1

这是隐藏索引文件的 .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>
于 2016-09-28T08:22:53.250 回答