【问题标题】:Redirect with CodeIgniter使用 CodeIgniter 重定向
【发布时间】:2010-10-17 22:56:51
【问题描述】:

谁能告诉我为什么我的重定向助手不能按我预期的方式工作?我正在尝试重定向到我的主控制器的 index 方法,但是当它应该路由到 www.mysite.com/provider1 时需要我 www.mysite.com/index/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

【问题讨论】:

  • DUH....我今天是个白痴,我没有将它发送到我的控制器(即 main.php),而是好像我试图加载一个名为 index 的控制器.很抱歉。
  • 这是一个非常有用的 CodeIgniter 问题。 Apache 规则与 CI 路由的交互,需要网上更多的例子。

标签: php codeigniter redirect urlhelper


【解决方案1】:

重定向()

网址助手


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

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

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

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

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

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

例子:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

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

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

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

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

        它对我有用。

        【讨论】:

          【解决方案5】:

          这是隐藏索引文件的 .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>
          

          【讨论】:

            猜你喜欢
            • 2023-04-04
            • 1970-01-01
            • 1970-01-01
            • 2011-01-29
            • 2014-09-09
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多