Rewriterule condition

bertolino

Nuovo Utente
25 Mag 2013
6
0
0
Ciao a tutti.
Non riesco a capire come scrivere il codice affinchè .htaccess controlli se l’Url esiste.
Faccio un esempio:

http://localhost:8080/annunci/abbig...shirt-bambino-bambina-da-04-a-10-anni-180.htm

http://localhost:8080/annunci/abbig...shirt-bambino-bambina-da-04-a-10-anni-180.htm

http://localhost:8080/annunci/abbig...shirt-bambino-bambina-da-04-a-10-anni-180.htm

il primo va bene

nel secondo cambio la categoria “abbiglia” che non esiste ma ricaricando la pagina non cambia nulla

nel terzo cambio la sottocategoria “magl” che non esiste e ricaricando la pagina riamane bianca

Tutto ciò crea contenuti duplicati e indicizza male le pagine.

In questa funzione viene creato l’url

function itemURL($idPost,$category,$type,$title,$subcat=""){//returns de url for the item, if you change this be aware that you need to change it in the .htaccess as well.
if(FRIENDLY_URL){
if ($subcat!="" && $category!=$subcat) $url='/'.$subcat.'/'.$category.'/'.friendly_url($title).'-'.$idPost.'.htm';
else $url='/'.$category.'/'.friendly_url($title).'-'.$idPost.'.htm'; // old= "/$idPost/$type/$category/".friendly_url($title);
}
else $url="/content/item.php?item=$idPost&type=$type&category=$category&title=".friendly_url($title);//no friendly url activated
return $url;
}

questo è il codice su .htaccess di riferimento:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/(.+)/(.+)/(.+)$ /$3/$4-$1.htm [R=301,L]
RewriteRule ^(.+)/(.+)/(.+)-([0-9]+).htm$ content/item.php?category=$2&item=$4 [L]
RewriteRule ^(.+)/(.+)-([0-9]+).htm$ content/item.php?category=$1&item=$3 [L]

Quello che dovrebbe fare è controllare se Url esiste e reindirizzare eventuali cambiamenti fatti sulla stringa a l’Url originale.

Da quello che ho studiato manca qualcosa ma cosa… e perché nel terzo esempio la pagina rimane bianca e non carica?
Ci vuole un’esperto!!!
 

Discussioni simili