Je viens de mettre à jour un de mes sites Web statiques vers un site web activé par codeIgniter. J'ai besoin de rediriger les noms de domaine exacts de l'ancien site vers les nouveaux pour éviter l'erreur 404.301 rediriger vers d'anciennes pages du site avec codeIgniter
- pages Vieux>
http://example.com/pagename.php
- nouvelles pages>
http://example.com/index.php/home/category_images/9(cat_id)
Je ne très haut pas. de pages si difficile à coder toutes les pages directement ne sera pas un problème. J'ai essayé:
Ne fonctionne pas, je ne sais pas pourquoi. mod_rewrite
est activé sur mon serveur apache.
Aussi, juste pour la confirmation s'il vous plaît dites-moi aussi dans quel dossier je devrais mettre ce fichier, je suis confus entre le répertoire racine ou le dossier de l'application.
Merci.
Version 2: Maintenant, après la suggestion de M. Michael, j'ai essayé de le mettre en œuvre en utilisant la fonction de redirection comme ceci:
fonction du contrôleur par défaut: home.php
function __construct()
{
// Call the Model constructor
parent::__construct();
$this->load->model('common_model');
$this->handle_redirects();
}
function handle_redirects()
{
$redirects = Array(
'gorgeous-girls.php' => 'home/category_images/9'
);
$uri = implode('/', $this->uri->segments);
foreach ($redirects as $from => $to)
{
$from = str_replace(':any', '.+', str_replace(':num', '[0-9]+', $from));
if (preg_match("#^{$from}$#i", $uri))
{
if (strpos($to, '$') !== false and strpos($from, '(') !== false)
$to = preg_replace("#^{$from}$#i", $to, $uri);
redirect($to , 'location', 301);
}
}
}
Et mes regards .htaccess comme:
RewriteEngine On
RewriteBase/
RewriteCond $1 !^(index.php|resources|robots.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/$1 [L]
PS: J'ai supprimé index.php de ma structure de nom de domaine. Cela ressemble à: www.example.com/controller/function/uri/uri
Maintenant, je ne reçois pas une page d'erreur de mon hôte, mais j'obtiens une page d'erreur de CodeIgniter.
Aidez-nous s'il vous plaît.
Voici à quoi ressemble mon code pour le fichier htaccess maintenant et il ne fonctionne toujours pas? :( RewriteEngine On RewriteBase/ RewriteCond% {HTTP_HOST}^www.example.com $ Règle^Rewrite (. *) $ Http://example.com/$1 [L, R = 301] RewriteCond % {REQUEST_FILENAME}! -d RewriteCond% {REQUEST_FILENAME}! -f RewriteRule^index.php /(.*) /index.php?q=$1 [L] RewriteRule^en page nom.php $/index .php/home/category_images/9 [L, R = 301] Et j'ai placé mon fichier .htaccess dans le dossier Application. Des idées ? –
@VinaySinghal Les règles .htaccess ne fonctionnent pas du tout ou seulement une règle? La raison pour laquelle je demande est que vous devrez peut-être définir votre fichier apache conf principal à AllowOverride. Sans cela, les fichiers .htaccess sont simplement ignorés. –
Monsieur, je suis très nouveau au développement. Je n'ai aucune idée à ce sujet. Je ne sais pas lequel travaille et lequel ne l'est pas. Si vous me demandez, je peux effectuer le test. Aussi le site Web héberge sur un compte d'hébergement partagé de 1and1.com –