Редирект с 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/ [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');функция перенаправления загружает локальный URI, указанный в первом параметре вызова функции и построенный с использованием параметров, указанных в файле конфигурации.
второй параметр позволяет разработчику использовать различные команды HTTP для выполнения перенаправления "location"или " refresh".
согласно документации Code Igniter: "расположение быстрее, но на серверах 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 helper, как этот тип или вы можете загрузить в автозагрузки.файл 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>
Comments