301 in htaccess Codeigniter umleiten
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
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