Перенаправление с CodeIgniter - PullRequest
58 голосов
/ 07 апреля 2009

Может кто-нибудь сказать мне, почему мой помощник перенаправления не работает так, как я ожидал? Я пытаюсь перенаправить на метод индекса моего основного контроллера, но мне нужно 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

Ответы [ 5 ]

142 голосов
/ 07 апреля 2009

редирект ()

URL Helper

<ч /> Оператор перенаправления в коде воспламенителя отправляет пользователя на указанную веб-страницу с помощью оператора заголовка перенаправления.

Этот оператор находится в помощнике URL, который загружается следующим образом:

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

Функция перенаправления загружает локальный URI, указанный в первом параметре вызова функции и созданный с использованием параметров, указанных в файле конфигурации.

Второй параметр позволяет разработчику использовать различные HTTP-команды для выполнения перенаправления «местоположение» или «обновление».

Согласно документации Code Igniter: «Расположение быстрее, но на серверах Windows это иногда может быть проблемой».

Пример:

if ($user_logged_in === FALSE)
{
     redirect('/account/login', 'refresh');
}
4 голосов
/ 20 декабря 2014

Если ваша структура каталогов такая,

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 голосов
/ 28 сентября 2016

Если вы хотите перенаправить предыдущее местоположение или последний запрос, вам нужно включить user_agent library:

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

и затем, наконец, используйте функцию, которую вы используете:

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

это работает для меня.

2 голосов
/ 21 июля 2017

Во-первых, вам нужно загрузить URL-помощник, как этот тип, или вы можете загрузить в файле autoload.php:

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

if (!$user_logged_in)
{
  redirect('/account/login', 'refresh');
}
1 голос
/ 28 сентября 2016

Вот файл .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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...