• User

    Neofita di URL rewriting

    Ciao a tutti,
    inanzitutto mi presento, mi chiamo Nicola, e sono unweb programmer siciliano, co-autore del CMS opens ource ASP, Zenukers.

    Da qualche giorno mi sto imbattendo nell'url rewriting per un'altro progetto, ma essendo neofita dell'argomento sto incontrando alcune difficoltà; per questo ho deciso di chiedere consiglio/aiuto a questa comunità, che lato SEO soprattutto penso sia ineguagliabile.

    Prima di porvi le mie domande, vi espongo la struttura del sito al quale sto lavorando.

    • root del sito, che comprende i file robots.asp e stemap.asp

      • cartella di versione (/it per esempio)

        • cartella /notizie

        • sitemap.asp

        • feed.asp

      • altra cartella di versione (/en per esempio)

        • cartella /news

        • sitemap.asp

        • feed.asp

    La mia intenzione è quella di rendere dinamica la creazione del robots.txt e della sitemap.xml ke è una sitemap index sulla root; di rendere dinamica la creazione della sitemap.xml e del file feed.xml sulle cartelle di versione e di rendere seo frendly le pagine delle notizie.

    Per fare questo ho usato 3 file .htaccess ( il che già nn mi sembra una cosa corretta, per cui chiedi lumi al riguardo).

    Nel primo file .htaccess sulla root ho scritto il seguente codice, che cmq funziona :
    [PHP]
    RewriteEngine on
    RewriteRule robots.txt robots.asp
    RewriteRule sitemap.xml sitemap.asp
    [/PHP]

    Nel secondo file .htaccess sulla cartella di versione (quindi un file .htaccess per /it uno per /en/ etc...) ho scritto il seguente codice, che cmq funziona :
    [PHP]
    RewriteEngine on
    RewriteBase /
    RewriteRule sitemap.xml sitemap.asp
    RewriteRule feed.xml feed.asp
    [/PHP]

    Nel terzo file .htaccess sulla cartella di notizie di versione (quindi un file .htaccess per /it/notizie/ uno per /en/news/ etc...) ho scritto il seguente codice, che NON funziona :
    [PHP]
    RewriteEngine on
    RewriteRule ([0-9]+)/$ default.asp?id=$2&title=$1
    [/PHP]

    il mio intento è quello di rendere seo friendly url da questo tipo

    /it/notizie/?id=XX&title=YY a /it/notizie/YY/

    /en/news/?id=XX&title=YY a /en/news/YY/

    /es/noticias/?id=XX&title=YY a /es/noticias/YY/

    etc.... ma come suddetto nn mi funziona la regola, che è quindi sbagliata.

    Avete idee o consigli in merito?

    Vi ringrazio


  • Moderatore

    Prova con questa:

    RewriteRule [^/]/([a-z]+)/$ default.asp?id$2&title=$1

    Tieni presente che non ho mai utilizzato queste regole quindi fammi sapere.

    Marco


  • User

    No, nn va bene


  • Moderatore

    Prova con questo:

    ^/it/notizie/([^/]+)$ /it/notizie/?id=$2&title=$1

    Marco


  • User

    Niente, non funziona neanche questa regola. Ma in quale dei tre .htaccess file devo inserirla? in quello dentro la cartella notizie/ ? Anche se credo non vada bene cmq perchè ho provato ad inserire questa regola dentro il file della root e dentro il file della caretlla notizie


  • Moderatore

    Potresti postarmi cosa ritorna la regola che ti ho indicato?

    Marco


  • User

    Cliccando sul link si ha The system cannot find the file specified.

    Ho capito quasi tutto.

    Se uso questa :

    RewriteRule (.)/(.) default.asp?id=$2&title=$1

    mi funziona però io nn voglio riscrivere il parametro id e quindi se uso questa

    RewriteRule (.*)/ default.asp?id=$2&title=$1

    non mi funziona


  • Moderatore

    Con quella sintassi dovrebbe sostituirti i valori parametrici $1 e $2.

    Prova con questa, probabilmente con l'asterisco funziona. In pratica l'obiettivo è quello di andare a sostituire il parametro $1 al posto del pattern **(.*).
    **Il parametro $2 non dovrebbe quindi essere considerato.

    ^/it/notizie/(.*)/$ /it/notizie/?id=$2&title=$1

    Marco


  • User

    Ma da quello che ho capito dalle regole non mi funziona perchè è come se passassi un url del tipo ?id=&title=XX .
    Quindi il mio script non riceve l'id che mi serve per sputargli fuori la visualizzazione corretta e mi visualizza la pagina coin i link alle varie pagine.

    Quindi mi sa che nn c'è altra solzuione perchè l'associazione fra stringa ed id da me non si può usare perchè non è univoca.

    Cmq Marco grazie dell' aiuto.


  • Moderatore

    Non hai detto che vuoi ottenere una rewrite di questo tipo?

    il mio intento è quello di rendere seo friendly url da questo tipo
    /it/notizie/?id=XX&title=YY a /it/notizie/YY/
    /en/news/?id=XX&title=YY a /en/news/YY/
    /es/noticias/?id=XX&title=YY a /es/noticias/YY/

    I tuoi URL quindi contengono sia **id **che title come parametri della query-string, e in questo caso il pattern (.*) ****dovrebbe essere sostituito con il valore della variabile **title **ossia YY (nel caso in esempio).

    Marco


  • User

    si ma sei il mio link è notizie/titolomianotizia/ come lo trasformo in notizie/default.asp?id=xx&title=YY

    perchè YY = titolonotizia, e XX = a cosa?

    sono costretto ad inserire nell'uRL seo frendly per forza l'id in qualke modo, no?


  • Moderatore

    Ma non volevi fare il contrario?

    Marco


  • User

    Forse mi sono spiegato male io, io nelle mie pagine ho l'url seo friendly che il server mi deve interpretare in default.asp?id=XX&title=YY per visualizzarmi la pagina corretta. Ma comunque ho contrllato in giro l'unico modo per eliminare l'id dal mio URL è quello di fare un'associazione univoca fra ID e titolo che purtroppo nn posso fare


  • Moderatore

    Perchè vorresti eliminare l'id nella query string?
    Un'articolo è individuato univocamente da un id e da un titolo, a meno che il titolo non sia già univoco.

    Marco


  • User

    Infatti è quello che dico io, io nn ho i titoli univoci quindi devo per forza usare l'id.

    Volevo togliere l'id per evitare di usare nell'URl un valore numerico che ci sta sempre un pò male, ma dato che non si può fare, ho risolto mettendolo.

    Grazie di tutto l'aiuto comunque. Credo che il topic si possa chiudere qui


  • Moderatore

    Ok

    Buon lavoro

    Marco