Modrewrite w katalogu by jachu

Nie podam instrukcji krok po kroku jak przerobić cały katalog, ale skupię się na ‘Ostanio dodanych’. Po poniższych wskazówkach powinieneś poradzić sobie z modyfikacją całego katalogu.

Na początku utworzymy funkcję, która usunie z tytułu polskie znaki. Następnie zdefiniujemy ją np w usefull.php (plik jest includowany praktycznie wszędzie).

function filtr_znaki($wyraz,$tabulator)
{
$wyraz = str_replace(“ć”, “c”, $wyraz);
$wyraz = str_replace(“¶”, “s”, $wyraz);
$wyraz = str_replace(“¶”, “s”, $wyraz);
$wyraz = str_replace(“ę”, “e”, $wyraz);
$wyraz = str_replace(“ż”, “z”, $wyraz);
$wyraz = str_replace(“ó”, “o”, $wyraz);
$wyraz = str_replace(“ł”, “l”, $wyraz);
$wyraz = str_replace(“±”, “a”, $wyraz);
$wyraz = str_replace(“,,”, “,”, $wyraz);
$wyraz = str_replace(” “, “$tabulator”, $wyraz);
$wyraz = str_replace(“-”, “”, $wyraz);
$wyraz = str_replace(“.”, “”, $wyraz);
$wyraz = str_replace(“,,”, “,”, $wyraz);
$wyraz = str_replace(“¦”, “S”, $wyraz);
$wyraz = str_replace(“Ż”, “Z”, $wyraz);
$wyraz = str_replace(“Ł”, “L”, $wyraz);
$wyraz = str_replace(“¬”, “Z”, $wyraz);
$wyraz = str_replace(“Ľ”, “z”, $wyraz);
$wyraz = str_replace(“ń”, “n”, $wyraz);
$wyraz = str_replace(“Ń”, “n”, $wyraz);

$wyraz = str_replace(“Ć”, “c”, $wyraz);
$wyraz = str_replace(“Ó”, “o”, $wyraz);
return ($wyraz);
}

Powyżej mamy gotową funkcję – usunie ona polskie znaki, puste miejsca (spacje) zastąpi tabulatorem (możemy go zdefiniować w czasie wywołania funkcji).

Do rzeczy … otwórzmy plik last_added.php

Linijka numer 22

if ($mod_rewrite) {
$szcz_adres = “$mod_info-” . $wiersz['id'] . “.html”;
}

Zamienimy

if ($mod_rewrite) {
$tytul=strtolower(filtr_znaki($wiersz['tytul'],’,'));
$szcz_adres = “$tytul-$mod_info-” . $wiersz['id'] . “.html”;
}

strlowet oznacza, że ciąg zamienimy na małe litery (po co nam duże litery w linkach ;) )

filtr_znaki($wiersz['tytul'],’,') – w tym momencie zmienna zawierająca tytuł wpisu zostanie przefiltrowana funkcją utworzoną wcześniej pt ‘filtr_znaki’. W moim wypadku tabulatorem jest przecinek (,), ale nic nie stoi na przeszkodzie aby był to myślnik(-) czy inny znak ..

Następnie w 48 linijce należy jeszcze zmienić, wyświetlał się nasz link do podstrony

$tpl = str_replace(‘{url}’ , $wiersz['url'], $tpl);

W tym momencie polepszyliśmy linkowanie wewnętrzne i mamy ‘przyjazne linki’

$tpl = str_replace(‘{url}’ , $szcz_adres, $tpl);

Ostanią rzeczą jaką modyfikujemy to plik .htaccess . W pliku musi pojawić się poniższa linijka.

RewriteEngine On
RewriteRule ^(.*)-info-([0-9]+)\.html$ index.php?m=3&wpis=$2 [L]

Analogicznie należałoby przerobić pliki odpowiadające za kategorie, podkategorie, szczegóły wpisów itd.

Zapraszam do komentowania.

Odpowiedzi: 5

  1. Biorąc pod uwagę, że niektóre wpisy są dużymi literami trzeba uwzględnić pozostałe:
    $wyraz = str_replace(”Ć”, “c”, $wyraz);
    $wyraz = str_replace(”Ó”, “o”, $wyraz);
    itd.
    dodatkowo można jeszcze w pliku menu_left.php zmienic w odpowiednim miejscu np.
    a href=”info-2.html” > Kontakt
    i w .htaccess dodać
    RewriteRule ^info-([0-9]+)\.html$ index.php?ms=$1

  2. Dokładnie uchybienie dotyczące dużych liter poprawione w tym mini arcie ;)

  3. Cze,
    podalbys chociaz nazwy plikow ktore cza pzerobic ;)

  4. ale tych plików do modyfikacji jest sporoo … najlepiej ściągnąć moją modyfikacje i podpatrzeć pliki ;) Albo zainstalować .. (http://qlweb.wordpress.com/2007/01/24/upgrade-katalogu-qlweb-do-mojej-modyfikacji/)

  5. Witam
    Mam problem :)
    Po włączeniu modrewrite w PA przestaje działać poprawnie wyszukiwarka na stronie.
    Tzn. kompletnie nic nie wyszukuje.
    Jeśli modrewrite jest wyłączony wyszukiwarka działa poprawnie.
    Dzieje się tak na zainstalowanej świeżej, kompletnie czystej wersji qlweb’a by jachu

Dodaj komentarz