301 in htaccess Codeigniter umleiten

Jul 20 2020

Wie mache ich 301-Weiterleitungen in CI? Ich erstelle eine neue Website in CI und möchte 301-Weiterleitungen von der früheren Version der Website machen, wo die URL-Struktur etwas anders aussieht, also wollte ich die wichtigsten Unterseiten in htaccess umleiten, aber die regulären Regeln drin htaccess funktionieren bei mir nicht, ich denke wegen Einträgen in der routes.php

$route['(:any)/(:any)/(:num)'] = 'ads/cat/$1/$2/$3';
$route['(:any)/(:any)'] = 'ads/cat/$1/$2';
$route['(:any)'] = 'ads/cat/$1';

und meine htaccess-Datei

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]

und ich möchte zum Beispiel umleiten

RewriteRule ^oldcat1/oldcat2/oldcat3/ http://localhost/newcat1/newcat2 [R=301,L]

Aber diese Weiterleitung funktioniert nicht. Wie geht man damit um?

Antworten

2 MrWhite Jul 20 2020 at 05:32

Sie müssen sicherstellen, dass Sie Ihre externen Weiterleitungen vor den vorhandenen Anweisungen platzieren, die die Anfrage an Ihren CodeIgniter-Front-Controller senden, da sie sonst einfach nicht verarbeitet werden.

Zum Beispiel:

# External redirects
RewriteRule ^oldcat1/oldcat2/oldcat3/ http://localhost/newcat1/newcat2 [R=301,L]

# Front-controller
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]

Dies hat nichts mit Routen zu tun, die Sie möglicherweise in CodeIgniter definiert haben, da sie vor.htaccess dem Aufruf verarbeitet werden. routes.php