- Home
- Categorie
- La Community Connect.gt
- Tutto sulla Community
- conversione url
-
il cms e fatto da me,
nel senso che non uso nessun cms, sono pagine che vengono create al volo e estraggono i dati da un database,
il rediret 301 non sono capace di farlo gia sono riusito dopo diversi tentativi a applicare il mod_rew.
le pagine sono dinamiche e i dati vengono estratti da un database es:articolo.php?articolo=10
dove articolo e l'id del database
questa e la struttura del sito che poi sarebbe quello che ho in firma, basta che leggi le pagine degli articoli e capisci subito cosa voglio dire.
grazie per l'aiuto
-
@kaisersose said:
il cms e fatto da me,
nel senso che non uso nessun cms, sono pagine che vengono create al volo e estraggono i dati da un database,
il rediret 301 non sono capace di farlo gia sono riusito dopo diversi tentativi a applicare il mod_rew.
le pagine sono dinamiche e i dati vengono estratti da un database es:articolo.php?articolo=10
dove articolo e l'id del database
questa e la struttura del sito che poi sarebbe quello che ho in firma, basta che leggi le pagine degli articoli e capisci subito cosa voglio dire.
grazie per l'aiuto
per il redirect 301 dovrebbe essere qualcosa tipo:Options -MultiViews RewriteEngine On RewriteBase / RewriteRule ^pagina-*.html$ pagina-$1.html ```questo dovrebbe funzionare, prova e dimmi se va bene per la modifica dei link devi modificare lo script di gestione in modo che generi i link in maniera identica alle modifiche che hai fatto.
-
Ho provato e rprovato alla fine un indirizzo del genere
pagina.php?articolo=30
lo convertito in :
pagina-30.html
ho modificato lo script php in modo da reindirizzare i nuovi link in modo corretto, mi e bastato inserire il valore dinamico dell'id cosi:
pagina-$ID.html
in modo da otttenere sempre l'indirizzo giusto sul server,
ora pero per quanto riguarda i motori di ricerca, giustamente la prima soluzione e quella ancora inclusa nei motori (pagina.php?articolo=ID)quindi dovrei fare un 301 per reindirizzare il motore sulle nuove pagine e quindi non perdere il posizionamento delle pagine vecchie.
e qua mi fermo perche non sono riuscito a fare il redirect con il 301.
Conviene farl ogiusto? altrimenti i lmotore indicizza la pagina vecchia oppure mi penalizza l altre, giusto?
oppure posso lasciare entrambe come sono adesso e non ricevo penalizzazioni o altro?
Scusatemi l'ignoranza ma sto mod_rew proprio e duro da capire, meno male che c'è il forum e un grazie infinito a osvi per la guida altrimenti col cavolo che usavo sto mod_Rew.
P.S.: so che articolo-30.html non e la forma semanticamente piu corretta ma e gia un passo in avanti, se riesco a fre il redirect col 301 posso poi provare a fare modifiche piu complesse.Grazie per i suggerimenti.
-
Ciao
innanzitutto devi modificare il motore che ti genera i link in modo da crearli nella forma articolo-30.html, e questo mi pare di aver capito che lo hai fatto.poi devi fare in modo che:
- il link articolo-30.html punti allo script vero e proprio pagina.php?articolo=30
- evitare che i motori di ricerca perdano i vecchi link e inserire un 301.
io farei cosi:
RewriteCond %{REQUEST_URI} /articolo-(\d+).html$ RewriteRule ^articolo-(\d+).html$ pagina.php?articolo=$1 RewriteCond %{REQUEST_URI} /pagina\.php RewriteCond %{QUERY_STRING} ^articolo=(\d+) RewriteRule ^.*$ pagina.php?articolo=%1 [R=301, L] ```Probabilmente il secondo gruppo di regole sarà un casino farlo funzionare se non funziona ;) fammi sapere ciao
-
Riecchime!!
Dopo tantissimi tentativi, sono testardo, sono riuscito a riscrivere tutti gli url del sito trasformando la pagina da
articolo.php?articolo=10
a
10/categoria/titolo-articolo/funzionano tutti gli url e ho modificato tutti gli script php in modo da convertire gli url in automatico, praticamente tutto perfetto.
Ora pero sto impazzendo (e figurati) con il redirect 301io avevo fatto cosi
<?php
$ID = $row_articoli['ID'];
$categoria = $row_articoli['categoria'];
$titolo = $row_articoli['titolo'];
$titolo = str_replace(" ","-",$titolo);
$collegamento = 'http://www.miosito.it/' . $ID . '/' . $categoria . '/' . $titolo . '/';
?>
<?
header("Status: 301 Moved Permanently");
header("Location: $collegamento");
exit;
?>
questo codice per creare le 3 variabili e concatenarle per creare una sola variabile($collegamento) che contiene l'url completo. pero ricevo dal browser questo errore:
**
Questa pagina non ridireziona in modo corretto
Firefox ha rilevato che il server sta ridirezionando la richiesta per questo indirizzo in modo che non possa mai essere completata.
* Questo problema spesso è causato dal blocco o dal rifiuto dei cookie.**ho provato a togliere $collegamento e inserire direttamente l'url
http://www.miosito.it/$ID/$categoria/$titolo/ma sempre lo stesso errore, pero se invece metto
http://www.miosito.it/$ID/
funiziona solo che giustamente non trova nessuna pagina aquell'indirizzo perche mancano categoria e titolo.e un po complicato con htaccess ho rinunciato perche proprio non ci riesco e ricevo sempre errore interno del server.
cmq il codice htaccess e :
**RewriteEngine On
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/$ articolo.php?articolo=$1&nomecat=$2&titolo=$3
RewriteRule ^Guide/([^/]+)/([^/]+)/([^/]+)/$ tutorial.php?id=$1&guida=$2&titolo=$3
RewriteRule ^([^/]+)/$ categoria.php?cat=$1
RewriteRule ^([^/]+)/([^/]+)/$ indice.php?guida=$1&nome=$2
RewriteRule ^Download/([^/]+).html$ indice_down.php?d=$1
RewriteRule ^Download/([^/]+)/([^/]+)/([^/]+)/$ downloading.php?down=$1&categoria=$2nome=$3
**
naturalmente mi riferisco solo alla prima regola sulla pagina articolo.phpio vorrei farlo in htaccess ma proprio non va....
Il primo passaggio di google bot e andato, non vorrei perdere il prossimo.
-
In effetti stai creando un loop.
Sia che uno arrivi dal vecchio indirizzo che dal nuovo va a finire su articolo.php il quale tramite codice php reindirizza al nuovo ed il loop parte perchè l'htaccess riporta nuovante ad articolo.php.
Per risolvere dovresti reindirizzare solo se nell'url c'è articolo.php
Una soluzione semplice può essere (verifica prima se ho azzecato la variabile..sono andato a memoria
[php]
if (basename($_SERVER['SCRIPT_NAME']) == 'articolo.php') {
//tua routine di redirect 301
}
[/php]
Ciao
-
Scusami,
ma non ho afferrato molto chiaro il concetto,
in pratica dovrei fare un if per verificare se nell'url contiene articolo.php e in caso positivo effetuare il redirect con location, giusto?ci provo e faccio sapere.
-
esatto
-
nulla da fare esegue sempre il loop e non mi visualizza la pagina.
ci sto impazzendo con questo redirect.
-
Scusatemi se ritorno di nuovo sul post e insisto ma sono proprio disperato
ho un casino di pagine non esistenti indicizzate su google e se non faccio sto benedetto redirect la situazione degenera, gia ho perso tanto su google.
Qualcuno che riesce a aiutarmi ?
sto impazzendo!!!
;(