• User

    RewriteRule...qualcuno mi togle delle curiosità?!

    Salve a tutti,
    chiedo a persone più esperte di me lumi sul RewriteRule...

    1- Posso usare il RewriteRule anche se ormai sul sito ho riferimenti fatti in un certo modo?mi riferisco a css & c. perchè facendo un RewriteRule su una pagina con questo url nightchannel.it/index.php?sel=music (ottenendo nightchannel.it/homepage/music) non vedo le immagini e gli stili del CSS..come mai?dovrei rifare tutti i riferimenti?
    2- Se vado su nightchannel.it/index.php?sel=music , una volta impostato il RewriteRule, non si può fare in modo che l?url diventi quello riscritto?

    <SEMI_OT>
    Nel mio .htaccess ho messo un redirect alla pagina index.php nel caso in cui si verifichi un errore 403 o 404 però la url rimane quella digitata male (nel caso di un 404)..non si può cambiare mettendo index.php?Dove sbaglio?!
    </SEMI_OT>

    Sperando in vostre risposte e sperando di non aver 'trasgredito' qualche regola vi ringrazio anticipatamente :smile5:


  • Super User

    @m3t4lup said:

    Salve a tutti,
    chiedo a persone più esperte di me lumi sul RewriteRule...

    Ciao m3t4lup

    @m3t4lup said:

    1- Posso usare il RewriteRule anche se ormai sul sito ho riferimenti fatti in un certo modo?mi riferisco a css & c. perchè facendo un RewriteRule su una pagina con questo url nightchannel.it/index.php?sel=music (ottenendo nightchannel.it/homepage/music) non vedo le immagini e gli stili del CSS..come mai?dovrei rifare tutti i riferimenti?

    Utilizza per css, js, immagini i riferimenti partendo dalla document root.
    Esempio: /css/nome.css, /img/esempio/nome.jpg
    @m3t4lup said:

    2- Se vado su nightchannel.it/index.php?sel=music , una volta impostato il RewriteRule, non si può fare in modo che l?url diventi quello riscritto?

    Certo, con un redirect 301.
    @m3t4lup said:

    <SEMI_OT>
    Nel mio .htaccess ho messo un redirect alla pagina index.php nel caso in cui si verifichi un errore 403 o 404 però la url rimane quella digitata male (nel caso di un 404)..non si può cambiare mettendo index.php?Dove sbaglio?!
    </SEMI_OT>

    Hai utilizzato un redirect 301? Perché reindirizzi alla home tutte le pagine inesistenti?


  • User

    @ayrton2001 said:

    Utilizza per css, js, immagini i riferimenti partendo dalla document root.
    Esempio: /css/nome.css, /img/esempio/nome.jpg

    uhm...ok ma usare css/nome.css e /css/nome.css non cambia un pò tutto?cioè a me basta fare partire tutti i riferimenti dalla document root per fare andare tutto o rischio di avere dei problemi?perchè mi ricordo che durante lo sviluppo sono incappato in questo problmea,cioè images/ e /images/ venivano trattati diversamente...alcune volte funzionava altre no

    @ayrton2001 said:

    Certo, con un redirect 301.

    ma dici alla fine di ogni regola mettere [L,R=301]? o devo fare qualcos'altro? perchè attualmente ho questo:

    #modulo per la riscrittura degli url
    RewriteEngine on
    RewriteRule ^/homepage/(.*).html /index.php?sel=$1 [L,R=301]
    
    

    ma non va

    @ayrton2001 said:

    Hai utilizzato un redirect 301? Perché reindirizzi alla home tutte le pagine inesistenti?

    no..ho usato
    ErrorDocument 404 /index.php
    ErrorDocument 403 /index.php
    per reindirizzare...ho visto che ci sono dei siti che ti rimandano alla home se inserisci un url inesistente..non so se è una buona pratica...volendo potrei creare una pagina di errore e reindirizzare su queste....ma non mi conviene usare l'ErrorDocument?


  • Super User

    @m3t4lup said:

    uhm...ok ma usare css/nome.css e /css/nome.css non cambia un pò tutto?

    Se la pagina che richiama il css si trova nella document root non cambia, se invece si trova nella cartella /esempio/ allora il css deve essere richiamato con /esempio/css/file.css

    @m3t4lup said:

    ma dici alla fine di ogni regola mettere [L,R=301]? o devo fare qualcos'altro? perchè attualmente ho questo:

    Si

    @m3t4lup said:

    #modulo per la riscrittura degli url
    RewriteEngine on
    RewriteRule ^/homepage/(.*).html /index.php?sel=$1 [L,R=301]
    
    

    ma non va

    Dovresti scrivere un esempio dell'URL che richiami.

    @m3t4lup said:

    no..ho usato
    ErrorDocument 404 /index.php
    ErrorDocument 403 /index.php
    per reindirizzare...ho visto che ci sono dei siti che ti rimandano alla home se inserisci un url inesistente..non so se è una buona pratica...volendo potrei creare una pagina di errore e reindirizzare su queste....ma non mi conviene usare l'ErrorDocument?
    Sarebbe opportuno, a mio parere, avere una pagina custom che sia inerente alla pagina non più esistente. Dipende comunque da caso a caso.


  • User

    allora Ayrton..intanto grazie per le tue risposte.
    Ok per il discorso files che si trovano nella document root...ho aggiunto questo nell'htaccess:

    
    RewriteEngine on
    RewriteBase /
    RewriteRule ^(.+)\.html$ index.php?sel=$1 [L,R=301]
    
    

    in questo modo se scrivo nightchannel.it/music.html in automatico vengo rimandato a nightchannel.it/index.php?sel=music e quindi va bene però appena faccio invio l'url nel browser diventa quella con i parametri...il che non so se ha senso...Ma una volta fatto ciò dovrei rifare tutti i riferimenti nel sito in modo da farli puntare all'url riscritto?è questo che non capisco.

    Per quanto riguarda gli errordocument indipendentemente dalla pagina a cui devono puntare rimane il fatto che se si mette un url sbagliato ottenendo un 404 vengo si rimandato alla index ma l'url nel browser rimane quello sbagliato...non capisco perchè...


  • Super User

    Se l'URL finale che vuoi ottenere è del tipo: nightchannel .it/music.html allora devo togliere R=301 dal la regola dell'.htaccess.

    Inoltre tutti gli URL presenti nelle pagine HTML devono essere .html.