• 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