Canvis a les adreces de siknus.com (RewriteCond-RewriteRule powered)

Us heu adonat dels canvis a les URLs adreces de siknus.com?

1) Com que siknus.com m’agrada més que www.siknus.com, he tret les www.

2) Les adreces dels posts passen a ser de http//www.siknus.com/?p=01-01-07-codi-post a http//siknus.com/codi-post. Molt més elegants, no?

3) http://www.siknus.com/?sec=fotos http://siknus.com/fotos, http://www.siknus.com/?sec=perfil http://siknus.com/perfil, …

4) http://www.siknus.com/?cat=propostes http://siknus.com/categoria/propostes, …

5) http://www.siknus.com/?arxiu=01-2007 http://siknus.com/arxiu/01-2007,…

6) Nous fils (aka feeds): http://siknus.com/rss, http://siknus.com/atom, http://siknus.com/comentaris/rss, http://siknus.com/categoria/codi-categoria/rss, http://siknus.com/codi-post/comentaris/rss…

No us preocupeu ni d’actualitzar els enllaços ni de tornar-vos a subscriure als nous fils. Es fa automàticament.

Si voleu saber com, aquí teniu el .htaccess que ho fa:

Options +FollowSymLinks

RewriteEngine On
RewriteBase /

############ REDIRECTS 301 NOTIFICANT ALS SPIDERS ############

# Elimina el subdomini www i els secta, etc… mal indexats,
# deixant la resta de la URL igual.

RewriteCond %{HTTP_HOST} ^www\.siknus\.com.* [NC,OR]
RewriteCond %{HTTP_HOST} ^secta\.siknus\.com.* [NC,OR]
RewriteCond %{HTTP_HOST} ^bloc\.siknus\.com.* [NC,OR]
RewriteCond %{HTTP_HOST} ^matrix\.siknus\.com.* [NC,OR]
RewriteCond %{HTTP_HOST} ^blog\.siknus\.com.* [NC]
RewriteRule ^(.*)$ http://siknus.com/$1 [R=301,L]

# Si el subdomini que hi ha no és un dels anteriors, envia’l
# com a directori després de la barra. Exemple:
# (De http://parellaperfectometre.siknus.com/
# a http://siknus.com/parellaperfectometre)

RewriteCond %{HTTP_HOST} ^([a-zA-Z_0-9\-]*)\.siknus\.com.* [NC]
RewriteRule ^.*$ http://siknus.com/%1 [R=301,L]

########## ADAPTACIÓ DE LES URLS ANTIGUES A LES NOVES ##########

# Si la URL té un codi de data en el format dd-mm-aa-
# (aproximadament ;)), l’elimina per adapatar els codis antics
# de posts tipus ?p=dd-mm-aa-nom-del-codi als nous
# ?p=nom-del-codi.

RewriteRule ^[0-9]+\-[0-9]+\-[0-9]+\-(.*)$ /$1? [R=301,L]

# /?sec=rss es converteix en /feeds (excepció de la redirecció
# següent, ja que sec=rss passa a ser sec=feeds)
# Possibilitat d’eliminar aquesta regla al cap d’un temps.

RewriteCond %{QUERY_STRING} ^sec=rss.*$
RewriteRule ^$ /feeds? [R=301,L]

# /?sec=* es converteix en /* on * = qualsevol cosa
# Possibilitat d’eliminar aquesta regla al cap d’un temps.

RewriteCond %{QUERY_STRING} ^sec=([a-zA-Z_0-9\-]*)$
RewriteRule ^$ /%1? [R=301,L]

# /?arxiu=* es converteix en /arxiu/*

RewriteCond %{QUERY_STRING} ^arxiu=([a-zA-Z_0-9\-]*)$
RewriteRule ^$ /arxiu/%1? [R=301,L]

# /?e=* es converteix en /forum/entrada/*
# Possibilitat d’eliminar aquesta regla al cap d’un temps.

RewriteCond %{QUERY_STRING} ^e=([a-zA-Z_0-9\-]*)$
RewriteRule ^$ /forum/entrada/%1? [R=301,L]

# /?alb=* es converteix en /fotos/album/*
# Possibilitat d’eliminar aquesta regla al cap d’un temps (poc)

RewriteCond %{QUERY_STRING} ^alb=([a-zA-Z_0-9\-]*)$
RewriteRule ^$ /fotos/album/%1? [R=301,L]

# Si no hi ha QueryString, /feed/rss2 es converteix en /rss

RewriteCond %{QUERY_STRING} ^$
RewriteRule ^feed/rss2/?$ /rss? [R=301,L]

# Si no hi ha QueryString, /feed/atom1 es converteix en /atom

RewriteCond %{QUERY_STRING} ^$
RewriteRule ^feed/atom1/?$ /atom? [R=301,L]

# Si no hi ha QueryString, /feed/comentaris es converteix en
# /comentaris/rss

RewriteCond %{QUERY_STRING} ^$
RewriteRule ^feed/comentaris/?$ /comentaris/rss? [R=301,L]

# Si hi ha el paràmetre cat=*,i és un feed tipus feed/*2 (rss)
# o feed/*1 (atom), /feed/*numero/?cat=nomcat es converteix en
# /categoria/nomcat/*

RewriteCond %{QUERY_STRING} ^cat=([a-zA-Z_0-9\-]*)$
RewriteRule ^.*feed/([a-zA-Z_\-]*).*$ /categoria/%1/$1? [R=301,L]

# Si hi ha el paràmetre cat=*, i no és un feed, /?cat=* es
# converteix en /categoria/*

RewriteCond %{REQUEST_URI} !^.*feed.*$
RewriteCond %{QUERY_STRING} ^cat=([a-zA-Z_0-9\-]*)$
RewriteRule ^$ /categoria/%1? [R=301,L]

# Si hi ha el paràmetre p=*, i és un feed, ha de ser de
# comentaris  i rss, per tant /feed/comentaris/?p=* es converteix
# en /*/comentaris/rss

RewriteCond %{QUERY_STRING} ^p=([a-zA-Z_0-9\-]*)$
RewriteRule ^.*feed/([a-zA-Z_\-]*).*$ /%1/comentaris/rss? [R=301,L]

# Si hi ha només el paràmetre p=*, i no és un feed, /?p=*
# es converteix en /*

RewriteCond %{REQUEST_URI} !^.*feed.*$
RewriteCond %{QUERY_STRING} ^p=([a-zA-Z_0-9\-]*)$
RewriteRule ^$ /%1? [R=301,L]

# Si hi ha el paràmetre p=* i el paràmetre rec=*, /?p=*1&rec=*2
# es converteix en /*1/rec/*2 (sistema d’obrir recomanar per
# e-mail incrustat als feeds).

RewriteCond %{QUERY_STRING} ^p=([^&]*)&rec=([^&]*)$
RewriteRule ^$ /%1/rec/%2 [R=301,L]

################################################################
# (Si es demana un arxiu o un directori que existeix, es deix
# passar la url tal qual)

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*)$ – [L]

####################### REDIRECTS OCULTS #######################
## (no es mostren públicament, mantenint la URL al navegador) ##

RewriteRule ^bloc/?$ / [R=301,L,NC]
RewriteRule ^perfil/?$ index.php?sec=perfil [L,NC]
RewriteRule ^fotos/?$ index.php?sec=fotos [L,NC]
RewriteRule ^forum/?$ index.php?sec=forum [L,NC]
RewriteRule ^feeds/?$ index.php?sec=feeds [L,NC]

RewriteRule ^rss/?$ rss2.php [L,NC]
RewriteRule ^atom/?$ atom1.php [L,NC]
RewriteRule ^comentaris/rss/?$ rss2comentaris.php [L,NC]

RewriteRule ^categoria/([a-zA-Z_0-9\-]+)/rss/?$ rss2.php?cat=$1 [L,NC]

RewriteRule ^categoria/([a-zA-Z_0-9\-]+)/atom/?$ atom1.php?cat=$1 [L,NC]

RewriteRule ^categoria/([a-zA-Z_0-9\-]+)/?$ index.php?cat=$1 [L,NC]

RewriteRule ^arxiu/([a-zA-Z_0-9\-]+)/?$ index.php?arxiu=$1 [L,NC]

RewriteRule ^forum/entrada/([a-zA-Z_0-9\-]+)/?$ index.php?e=$1 [L,NC]

RewriteRule ^fotos/album/([a-zA-Z_0-9\-]+)/?$ index.php?alb=$1 [L,NC]

RewriteRule ^([a-zA-Z_0-9\-]+)/comentaris/rss/?$ rss2comentaris.php?p=$1 [L,NC]

RewriteRule ^([a-zA-Z_0-9\-]+)/rec/([0-9]+)/?$ index.php?p=$1&rec=$2 [L,NC]

RewriteRule ^([a-zA-Z_0-9\-]+)/?$ index.php?p=$1 [L,NC]

# Uff…

Mai abans havia fet cap .htaccess, no havia fet gairebé res de Regular Expressions i no sabia ni que el mod_rewrite de l’Apache existia, per tant si veieu que hi ha algun error o que es pot millorar o optimitzar el codi, feu-m’ho saber.

Ara a esperar que els Redirects 301 (mogut permanentment) facin el seu efecte i els cercadors actualitzin les noves URLs. 😉

Una altra curiositat en forma de codi guarro:

if(isset($_REQUEST["p"])) {
    $prex=mysql_query("SELECT id_post FROM skb_bposts WHERE (filtre=’1′ OR filtre=’2′) AND id_post=’".$_REQUEST["p"]."’");
    if (!mysql_num_rows($prex)) {
        $pr=mysql_query("SELECT id_post FROM skb_bposts WHERE (filtre=’1′ OR filtre=’2′) AND id_post LIKE ‘%".$_REQUEST["p"]."%’ ORDER BY datahora DESC LIMIT 1");
        if (mysql_num_rows($pr)) { //anar al post
            $pa=mysql_fetch_array($pr);
            header("HTTP/1.1 301 Moved Permanently");
            header("Status: 301 Moved Permanently");
            header("Location: /".$pa["id_post"]);
            exit(0);
        }
    }
}

Això vol dir que si per exemple aneu a papallona.siknus.com, automàticament us porta a siknus.com/efecte-papallona. I qui diu papallona diu qualsevol part del codi del post al que voleu accedir: manu.siknus.com, mejide.siknus.com ….

Subscriu-te ara per no perdre't cap novetat! Fes-ho per e-mail o via RSS.

Aquesta entrada ha esta publicada en Dewebloping, siknus.cat. Afegeix a les adreces d'interès l'enllaç permanent.

Deixa un comentari

L'adreça electrònica no es publicarà. Els camps necessaris estan marcats amb *