Aktualizuję stronę internetową i mam kilka starych URL-i, które muszą zostać przekierowane do ich nowych odpowiedników. Chcę to zrobić po stronie serwera (zamiast z .htaccess)
Byłoby fajnie, gdyby w moim config / routes.php mógłbym zadeklarować coś takiego:
$route["old_url_1"] = redirect("/new/url/1", "location", 301);
$route["old_url_2"] = redirect("/new/url/2", "location", 301);
$route["old_url_3"] = redirect("/new/url/3", "location", 301);
Oczywiście to nie działa, ale czy jest coś takiego jak to możliwe, tj. Zachowaj ten kod w moim pliku tras (bardziej logicznym) lub czy muszę iść i skonfigurować funkcje w jakimś kontrolerze?
Dzięki.
Odpowiedzi:
1 dla odpowiedzi № 1Tak, musisz stworzyć coś (metoda na kontrolerze), które przekieruje przeglądarkę za pomocą kodu 301. Coś takiego:
<?php
if (!defined("BASEPATH"))
exit("No direct script access allowed");
class Redirectme extends MY_Controller {
public function index($url=false) {
if($url===false)
redirect("/");
redirect("/new/url/".$url,"location",301);
}
}
?>
i dodaj do route.php
$route["old_url_(:any)"] = "redirectme/index/$1";
W każdym razie, najlepszą praktyką jest przekierowanie przez .htaccess (ponieważ nie wywoła on nawet php-modułu z serwera WWW).