web-dev-qa-db-fra.com

Redirection avec CodeIgniter

Quelqu'un peut-il me dire pourquoi mon assistant de redirection ne fonctionne pas comme prévu? J'essaie de rediriger vers la méthode d'index de mon contrôleur principal, mais cela me prend www.mysite.com/index/provider1/ quand il devrait acheminer à www.mysite.com/provider1. Est-ce que ceci signifie quelque chose pour quelqu'un? La page d'index de la configuration est vide, bien que je ne pense pas que ce soit le problème. Quelqu'un at-il des conseils sur la façon de résoudre ce problème? Merci d'avance!

Contrôleur:

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
58
ocergynohtna

réorienter()

URL d'assistance


Cette instruction réside dans l’assistant d’URL chargé de la manière suivante:

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

La fonction de redirection charge un URI local spécifié dans le premier paramètre de l'appel de fonction et construit à l'aide des options spécifiées dans votre fichier de configuration.

Le deuxième paramètre permet au développeur d’utiliser différentes commandes HTTP pour effectuer la redirection "emplacement" ou "rafraîchissement".

Selon la documentation de Code Igniter: "La localisation est plus rapide, mais sur les serveurs Windows, cela peut parfois poser problème."

Exemple:

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

Si votre structure de répertoire est comme ça,

site
  application
         controller
                folder_1
                   first_controller.php
                   second_controller.php
                folder_2
                   first_controller.php
                   second_controller.php

Et lorsque vous allez le rediriger dans le même contrôleur dans lequel vous travaillez, écrivez simplement le code suivant.

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

Et si vous souhaitez rediriger vers un autre contrôle, utilisez le code suivant.

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

tout d'abord, vous devez charger l'URL helper de ce type ou vous pouvez l'envoyer dans le fichier autoload.php:

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

if (!$user_logged_in)
{
  redirect('/account/login', 'refresh');
}
3
Siddharth Shukla

Si vous souhaitez rediriger l'emplacement précédent ou la dernière demande, vous devez inclure user_agent bibliothèque:

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

puis utilisez enfin dans une fonction que vous utilisez:

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

ça marche pour moi.

3
Md Safiul Alam

Où se trouve le fichier .htaccess qui cache le fichier d'index

#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>
1
Alpesh-Prajapati