Перенаправление с CodeIgniter
Может кто-нибудь сказать мне, почему мой помощник перенаправления не работает так, как я ожидал? Я пытаюсь перенаправить на метод индекса моего основного контроллера, но это занимает у меня 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 ответов
перенаправление ()
URL Helper
Оператор redirect в коде воспламенителя отправляет пользователя на указанную веб-страницу с помощью оператора заголовка redirect.
Этот оператор находится в помощнике URL, который загружается следующим образом:
$this->load->helper('url');
Функция перенаправления загружает локальный URI, указанный в первом параметре вызова функции и созданный с использованием параметров, указанных в файле конфигурации.
Второй параметр позволяет разработчику использовать различные команды HTTP для выполнения перенаправления "местоположение" или "обновление".
Согласно документации Code Igniter: "Расположение быстрее, но на серверах Windows это иногда может быть проблемой".
Пример:
if ($user_logged_in === FALSE)
{
redirect('/account/login', 'refresh');
}
Если вы хотите перенаправить предыдущее местоположение или последний запрос, вы должны включить user_agent
библиотека:
$this->load->library('user_agent');
и затем используйте наконец функцию, которую вы используете:
redirect($this->agent->referrer());
это работает для меня.
Во -первых, вам нужно загрузить вспомогательный URL-адрес как этот тип, или вы можете загрузить в файл autoload.php:
$this->load->helper('url');
if (!$user_logged_in)
{
redirect('/account/login', 'refresh');
}
Если ваша структура каталогов такая,
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');
}
Вот файл.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>