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