• Super User •

    aiuto con MOD REWRITE...

    dunque, sto cercndo di rendere più user-and-robot-friendly le mie pagine....

    vorrei fare in modo che una delle mie URL del tipo:

    http://www.sagreinitalia.it/dettagli.asp?ID_S={3C35ABFA-5D0F-4910-BC98-7FDBDDBB4E17}

    venisse riscritta in modo da includere il nome della manifestazione, luogo e data... del tipo
    http://www.sagreinitalia.it/dettagli.asp?La-Baio-di-Sampeyre-Carnevale-Storico

    o insomma, qualcosa del genere...

    volevo sapere un paio di cose...

    1. tramite MOD_REWRITE sarebbe possibile fare una roba simile o il mod rewrite "riscrive" solo le variabili in modo più "legibile" ? In pratica io dovrei leggere le info dal DB e ricostruire l'URL, mica facile....)

    2. se la risposta alla 1) è stata "sì", vale la pena passare a Hosting Doppio Win+Linux (al momento io sono su aruba hosting windows...)?

    grazie dei pareri


  • Super User •

    @autodafe said:

    1. tramite MOD_REWRITE sarebbe possibile fare una roba simile o il mod rewrite "riscrive" solo le variabili in modo più "legibile" ? In pratica io dovrei leggere le info dal DB e ricostruire l'URL, mica facile....) Se ho ben capito cosa intendi, si.

    Si può fare, ma non è semplicissimo.

    Devi modificare gli url tramite htaccess inserendo tutte le informazioni necessarie a pescare la pagina da DB e in più aggiungere una parte di url jolly. Cioè una parte in cui qualunque carattere viene inserito è del tutto ignorato. In questo modo nella parte "jolly" puoi mettere le parole che ti interessano senza che vengano considerate per individuare i contenuti della pagina.

    Poi devi pescare da DB il titolo delle pagine e costruire l'url composto dalla parte significativa (i numeri necessari a prendere i contenuti) e dalla parte jolly (contenende ad esempio il title della pagine a cui punta il link opportunamente filtrato e adattato).

    Spero di essere stato chiaro... Ma non credo 🙂

    Purtroppo non è banalissima come cosa.

    @autodafe said:

    1. se la risposta alla 1) è stata "sì", vale la pena passare a Hosting Doppio Win+Linux (al momento io sono su aruba hosting windows...)? Vedi tu 🙂

  • User •

    Mmm...
    su hosting Windows non puoi utilizzare il mod_rewrite (che è un modulo di apache).

    Su aruba con hosting linux non puoi utilizzare il mod_rewrite (che è un modulo che non ti attivano).

    Ci sono alcune tecniche che ti permettono di utilizzare la riscrittura degli url anche sotto windows ma c'è comunque bisogno di accede a delle impostazioni di IIS, quindi forse è meglio cambiare hosting.

    Saludos.


  • User Attivo •

    @Deantenea said:

    Su aruba con hosting linux non puoi utilizzare il mod_rewrite (che è un modulo che non ti attivano).

    boh... io ho hosting linux e uso il mod rewrite su quasi tutti i miei siti
    perche' dici che aruba non lo attiva?


  • Super User •

    @Deantenea said:

    Mmm...
    su hosting Windows non puoi utilizzare il mod_rewrite (che è un modulo di apache).

    e fin qui ok...

    @Deantenea said:

    Su aruba con hosting linux non puoi utilizzare il mod_rewrite (che è un modulo che non ti attivano).

    ho chiesto a loro (aruba) e mi hanno detto che con hosting linux, oppure nel mio caso hosting doppio si può gestire il mod_rewrite...


  • Super User •

  • Super User •

    @claudioweb

    grazie della risposta, devo leggermi ancora un paio di volte il tutto per essere sicuro di aver capito...comuqnue l'importante è che si possa fare...il come poi lo troverò, almeno spero...:)


  • User Attivo •

    Confidiamo in te 🙂


  • Super User •

    allora, la buona notizia è che sono passato ad hosting (aruba) misto Win+Linux, che ho provato un semplice rewrite re-indirizzando tutte le richieste a index.php a un altra pagina e funziona...:)

    la cattiva notizia è che ora mi devo smazzare un bel po' di codice partendo praticamente da zero per quanto riguarda il rewrite delle mie url in user-friendly...😢qualsiasi aiuto , o link a guide/tutorial per farlo è MOLTO ben accetto !!!

    grazie in anticipo 🙂


  • Super User •

    allora, non so se ho fatto una cosa del tutto corretta...però sembra che funzioni...

    allora...ho rigenerato le mie URL in modo che vengano prese dal DB come quella che segue:

    lnx.sagreinitalia.it/{7E379297-DE46-47C3-AD13-531109FFC385}/Rieti-Mostra-mercato-dell'antiquariato.htm

    (almeno ho nella URL il nome della manifestazione e la città...)

    la RewriteRule che ho creato estrae l'ID della sagra e reindirizza alla URL reale...

    RewriteRule ^(.)/..htm$ http://www.sagreinitalia.it/dettagli.asp?ID_S=$1 [R,L]

    è corretto più o meno? :?sarebbe opportuno accorciare quell'ID abnormemente lungo vero?? (mannaggia a me e a chi mi ha fatto usare un Uniqueidentifier come ID....:x)


  • Super User •

    OK, ho deciso , cambio quell'orendo uniqueidentifier con un bigint..sto facendo dei test su una tabella duplicata e sembra tutto Ok 🙂 forse ci siamo !!!


  • Super User •

    ok, gli ultimi test mi danno questa URL:

    lnx.sagreinitalia.it/1193/S.Casciano-Val-di-Pesa-Mercantico-e-Festa-dei-Confetti.htm

    convertita correttamante...non uso più uno uniqueidentifier come id ma un bigint...

    molto meglio, no ???:)

    ulteriore domanda....secondo voi la URL con città e nome completo è troppo lunga oppure è OK ?


  • User •

    Ciao autodafe,

    Come ha detto claudioweb non è banalissima la cosa.
    Ho tanta esperienza su questo argomento e vedo che ci sono alcune cose che potresti migliorare.

    1.- Una parte Jolly nelle URL non è una buona idea, perché cambiando questa parte jolly che serve a niente, andresti a creare una URL diversa con contenuto uguale, quindi contenuto duplicato.

    2.- Usare l'ID e meglio del uniqueidentifier evidentemente ma... allontana di un livello la struttura del sito, cioè stai a due livelli dalla radice con una directory (id) che non dice niente a nessuno (user/spider).

    3.- Usare il titolo della pagina, quello nel record del DB non è buono, perché dovresti formattare il titolo per farlo URL compatibile. Ci sono dei caratteri speciali che non si devono usare nelle url. Ricorda anche che maiuscole e minuscole in Unix sono due cose diverse...

    spero che questi 3 punti ti possano servire visto che stai iniziando con questo utilissimo sistema. Ti direi anche di leggere un po' su "regular expressions", ti sarà molto utile. www.regular-expressions.info

    Ciao e buon lavoro.


  • Super User •

    @masterx said:

    1.- Una parte Jolly nelle URL non è una buona idea, perché cambiando questa parte jolly che serve a niente, andresti a creare una URL diversa con contenuto uguale, quindi contenuto duplicato.

    questa non l'ho ben capita...:?intendi dire che la nuova URL è del tutto siile alla vecchia? mi puoi esplicitare please???

    @masterx said:

    2.- Usare l'ID e meglio del uniqueidentifier evidentemente ma... allontana di un livello la struttura del sito, cioè stai a due livelli dalla radice con una directory (id) che non dice niente a nessuno (user/spider).

    ok, e quindi se costruissi la URL (anzichè /ID/citta-Titolo-della-manifestazione.htm) del tipo "ID-citta-Titolo-della-manifestazione.htm ??? sarebbe meglio?

    @masterx said:

    3.- Usare il titolo della pagina, quello nel record del DB non è buono, perché dovresti formattare il titolo per farlo URL compatibile. Ci sono dei caratteri speciali che non si devono usare nelle url. Ricorda anche che maiuscole e minuscole in Unix sono due cose diverse...

    ma io voglio che venga preso dai motori proprio il nome della manifestazione....allora, come alternativa potrei fare un LowerCase di tutto il tiolo e un replace dei caratteri "non validi" (intendi apostrofi, doppi apici e simili???)..giusto?

    @masterx said:

    spero che questi 3 punti ti possano servire visto che stai iniziando con questo utilissimo sistema. Ti direi anche di leggere un po' su "regular expressions", ti sarà molto utile. www.regular-expressions.info

    avevo proprio preso spunto in primis da regular-expression.info, e poi da un tutorial su html.it...ma gli darò una lettura più approfondita

    grazie mille o diecimila dei consigli...!!!:)


  • User •

    1.- Intendo dire che nessuna parte del url può essere flotante. Ad esempio queste URL:
    www.dominio.ext/23456/questa-pagina.html
    www.dominio.ext/23456/altra-pagina.html

    ti portano allo stesso contenuto, perché fino al ID è utile, il resto lo usi per fare parlare l'URL, questo in un sito piccolo è controllabile, ma un sito di media taglia potresti avere grossi problemi d'ordine e sopratutto il pericolo di arrivare con 2 URL diverse allo stesso contenuto è latente.

    2.- Se il sito è piccolo potresti usare una ricerca testuale anzi che col ID, è molto più lenta ma la struttura è più pulita tanto per umani che per gli spider.

    3.- Al posto di usare il campo titolo nel db, usa un campo URL e crea la stringa che verrà chiamata dal URL come nome pagina.
    Prova a scaricare wordpress e vedi come usano un campo text nel db per chiamare le pagine, quando si usa il modo re_write.

    (Se stai lavorando con un sito con tanti records ci sono dei modi per usare gli Index in mySQL e curare la performance DB/server/sito.)

    ciao.


  • Super User •

    allora...
    il rewrite che ho fatto sembra funzionare...
    la pagina:

    lnx.sagreinitalia.it/396-Firenze-Fiera-del-Cioccolato-Artigianale.htm

    viene correttamente reindirizzata su:

    www. sagreinitalia.it/dettagli2.asp?ID_S=396

    Ora...come devo fare per lasciare nell'Address Bar l'indirizzo "parlante" ??
    ho provato la direttiva QSA dentro la RewriteRule, mi visualizza l'indirizzo "parlante" ma non fa il redirect....

    la RewriteRule è questa: RewriteRule ^([0-9]+)-.*.htm$ http://www.sagreinitalia.it/dettagli2.asp?ID_S=$1 [L,QSA,NC]

    ???:x


  • Super User •

    @masterx said:

    1.- Una parte Jolly nelle URL non è una buona idea, perché cambiando questa parte jolly che serve a niente, andresti a creare una URL diversa con contenuto uguale, quindi contenuto duplicato.
    E' il metodo in genere più usato. Anche in questo forum si usa questo metodo ad esempio 🙂

    L'importante poi è linkare solo e soltanto un'unica url.

    Ciao :ciauz:


  • Super User •

    io ho fatto così in effetti...
    cioè, la parte finale della URL è: 396-Firenze-Fiera-del-Cioccolato-Artigianale.htm

    la Rule mi prende l' ID (396) e pesca la notizia dal DB (SQL Server).
    Duplicati non dovrei averne perchè i llink alle singole pagine li creo io prendendo semore dal DB...quindi non dovrei aver problemi di duplicazioni...

    come fare in modo che nella address bar compaia l'URL 396-Firenze-Fiera-del-Cioccolato-Artigianale.htm anzichè quella con l'ID ???


  • Super User •

    La regola è sbagliata. Risponde con un redirect 302.

    Prova qualcosa del tipo:

    Options +FollowSymLinks
    RewriteEngine on
    RewriteRule ^([0-9]+)(.*).htm$ dettagli2.asp?ID_S=$1 
    

    Altrimenti fatti un giro qui
    :ciauz:


  • Super User •

    sto impazzzendo :mmm:

    non appena aggiungo: ```
    Options +FollowSymLinks

    (l'ho messo come prima instruzione)
    
    mi da errore Internal Server Error 500 :x