O întrebare tehnică

Am pus aceeaşi întrebare şi pe Softpedia, dar acolo între atâţia experţi nu s-a găsit unul mai răsărit. Prin urmare, pe considerentul că cititorii mei îs mai deştepţi ca ai lor, vă rog oferiţi o soluţie sau un punct de unde să încep căutarea:

Am setat următoarea formă pentru linkurile de pe blog: hxxp://domeniublabla/2010-06-09/<postname>/ . Vreau să modific structura să arate aşa: hxxp://domeniu/2010/06/<postname> . Cum fac url rewrite astfel încât linkurile de forma veche să dea către forma nouă?

Eu vreau să fac url rewrite, astfel încât şi căutările din Google care veneau pe vechea structură de linkuri să fie redirectate spre varianta nouă. Să modific structura din WordPress ştiu şi eu.

Cu mulţumiri,

:)

La vânătoare de chichiţe
Mă piş

Comments 7

  • Options +FollowSymlinks
    RewriteEngine on
    RewriteRule ^domeniublabla/([0-9]+)-([0-9]+)-([0-9]+)/([^/]+)$ domeniublabla/$1/$2/$3/$4 [L,R=301]

  • De asemenea se recomanda http://www.iwebtool.com/htaccess_url_rewrite pentru invatarea prin exemple, si apropo, ca sa te flatezi : stii daimon.ch ?

  • si acum pe romaneste:

  • mircea: thank you.

    papi: ai aproximativ 24 de ore să explici ce vrei cu comentariul ăsta.

  • Exemplu dat de mircea e perfect.
    —-
    Dar, daca sa presupunem ca din nush ce motiv nu vrei prin thacces se poate folosi si o varianta in php, codul fiind introdus in wp-config.php.

    $url = “http://” . $_SERVER[‘HTTP_HOST’] . $_SERVER[‘REQUEST_URI’];
    $preg1 = ‘#(.*?)/([0-9]{4})-([0-9]{2})-([0-9]{2})/(.*?)$#’;
    if (preg_match($preg1, $url, $match)) {
    $new_url = $match[1].’/’.$match[2].’/’.$match[3].’/’.$match[5];
    header(“Location: “.$new_url,TRUE,301);
    exit;
    }
    —-
    Varianta in PHP este evident si mai lenta, ptr ca executa si cod php, insa exista o alternativa in php care va fi mai rapida ca raspuns decat un htaccess: rescrierea $_SERVER[‘REQUEST_URI’] cu noua valoare si atentionarea serverului ca acest link este “o clona” :D

    codul din wp-config.php ar fi ceva de genul:

    $preg1 = ‘#(.*?)/([0-9]{4})-([0-9]{2})-([0-9]{2})/(.*?)$#’;
    if (preg_match($preg1, $url, $match)) {
    $_SERVER[‘REQUEST_URI’] = ‘/’.$match[2].’/’.$match[3].’/’.$match[5];
    define(‘_NEW_URL’, $match[1].$_SERVER[‘REQUEST_URI’]);

    } else {
    define(‘_NEW_URL’, “”);
    }

    iar in header.php din tema curenta se adauga inainte de tagul urmatoarea linie in php

    if (_NEW_URL != “”) { echo ”; }

    In felul acesta wordpresul va primi un link corect, rescris, iar motorul de cautare va fi anuntat ca exista un link “original” !

    Avantajul este ca nu se mai face inca un request iar pagina se va incarca mai repede, adica nu se mai intarzie cu un raspuns+cerere+raspuns ci se va da direct un raspuns.

    BTW, ultima varianta nu e testata (in forma de mai sus) insa foloesc asemenea strategii pe un feed agregator si merge fara probleme de cateva luni ! Problema in cazul meu era ca aveam acelasi titlu ptr aceasi stire din mai multe surse si apaream cu continut duplicat. Asa ca folosesc ptr articole duplicat.

    Am chiar un intreg domeniu + cateva subdomenii cu si google chiar “ma iubeste” ptr asta :P

  • uh, mi-a fost filtrat articolul :)
    si nu au aparut !!

  • Cu mentiunea ca orice pregmatch in php consuma resurse ceva de speriat.