Перенаправление с помощью CodeIgniter
может ли кто-нибудь сказать мне, почему мой помощник перенаправления не работает так, как я ожидал? Я пытаюсь перенаправить на индексный метод моего основного контроллера, но он принимает меня www.mysite.com/index/provider1/
когда он должен маршрутизировать в www.mysite.com/provider1
. Это имеет смысл для кого-нибудь? У меня есть индексная страница в конфигурации, настроенная на пустую, хотя я не думаю, что это проблема. У кого-нибудь есть советы о том, как исправить эту проблему? Спасибо вперед!
контроллер:
if($provider == '') {
redirect('/index/provider1/', 'location');
}
.реврайт:
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/ [R=301,L]
RewriteBase /ttnf/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/ [L]
php_flag display_errors On
5 ответов
redirect ()
вспомогательный URL-адрес
Инструкция redirect в Code igniter отправляет пользователя на указанную веб-страницу с помощью инструкции redirect header.
этот оператор находится в помощнике URL, который загружается следующим образом:
$this->load->helper('url');
функция redirect загружает локальный URI, указанный в первом параметре вызова функции и построенный с использованием параметров, указанных в файле конфигурации.
второй параметр позволяет разработчику использовать различные команды HTTP для выполнения перенаправления "местоположение"или " обновить".
согласно документации по воспламенителю кода: "расположение быстрее, но на серверах 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
и когда вы собираетесь перенаправить его в тот же контроллер, в котором вы работаете, просто напишите следующий код.
$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');
}
Если вы хотите перенаправить предыдущее местоположение или последний запрос, то вы должны включить user_agent
библиотека:
$this->load->library('user_agent');
и затем использовать в функции, которую вы используете:
redirect($this->agent->referrer());
это работает для меня.
во-первых, вам нужно загрузить помощник URL, как этот тип или вы можете загрузить в автозагрузки.файл php:
$this->load->helper('url');
if (!$user_logged_in)
{
redirect('/account/login', 'refresh');
}
здесь .htacess файл, который скрывает файл index
#RewriteEngine on
#RewriteCond !^(index\.php|images|robots\.txt)
#RewriteRule ^(.*)$ /index.php/ [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/*(.*) / [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/ [L]
</IfModule>