• Moderatore

    Mod Rewrite si comporta diversamente a seconda dell'hosting?

    Ciao a tutti,
    questa volta il problema riguarda il mod rewrite e la mia domanda è questa..può essere che a seconda con chi si è in hosting il rewrite si comporti diversamente? Secondo me non è possibile ma mi son venuti forti dubbi ultimamente.
    Premetto che trattasi entrambi di hosting linux, uno su aruba e uno su server dedicato. Quello su server dedicato fa tutto quello che comando senza problemi mentre su aruba si comporta in maniera strana.

    Non mi sembra di sbagliare rewrittando(scusate il neologismo) così:
    RewriteRule ^(.).php$ pagina.php?parte1=$1
    RewriteRule ^(.
    )/(.*).php$ pagina.php?parte1=$1&parte2=$2

    invece mi va in errore

    Se scrivo al posto di (.) e della variabile il nome della parte tutto va bene es:
    RewriteRule ^parte_iniziale.php$ pagina.php?parte1=parte_iniziale
    mentre
    RewriteRule ^parte_iniziale/(.
    ).php$ pagina.php?parte1=parte_iniziale&parte2=$1
    funziona per alcune parti ma non sempre
    Tengo a precisare che pagina.php?parte1=parte_iniziale&parte2=parte_finale funziona perfettamente come stringa php
    Qualcuno ha qualche idea in merito?
    (Io spero sia veramente solo colpa di aruba ch etanto devo cambiare piano hosting e provider)
    :ciauz: e grazie


  • Super User

    a volte ci sono dei problemi, escono soprattutto dei 500, risolvibili col rewritebase

    "non funziona", cosa succede di preciso? 404? 500?

    ciao 😉
    Francesco


  • Moderatore

    ciao grazie dell'interessamento 🙂
    mi da errori 404 ma non capisco perchè dato che con alcune parole funziona mentre con altre no :mmm: :arrabbiato:
    in ogni caso la chiamata php da sempre risultati esatti..è proprio un problema di rewriting.
    Ho aggiunto il rewritebase ma non è cambiato nulla..


  • Super User

    il rewritebase risolve i 500

    prova a cambiare il (.*) in ([^/]+)

    ciao 🙂


  • Moderatore

    Ciao, il problema l'ho capito...ma purtroppo non sono contento di questo perchè non risolve nulla.
    ma il nome di una pagina .php già riscritta può dare problemi se poi la cartella "finta" si chiama nello stesso modo?
    Guarda te la faccio con esempio reale e pratico, il sito è il mio in firma

    volevo riscrivere le località in questo modo:

    RewriteRule ^(.*).php$ localita.php?zona_name=$1
    e come solito con la querystring php andava ma non il rewrite e ho dovuto ovviare in

    RewriteRule ^rimini.php$ localita.php?zona_name=rimini
    RewriteRule ^riccione.php$ localita.php?zona_name=riccione
    e così via per le località in menu ma già questo mi puzza non si possa fare (come dicevo nei post precedenti con un dedicato faccio quello che voglio)

    poi devo andare nelle sottolocalità e faccio

    RewriteRule ^(.)/(.).php$ localita.php?zona_name=$1&localita_name=$2
    che ovviamente non va visti i tentativi di prima e allora faccio:
    RewriteRule ^rimini/(.).php$ localita.php?zona_name=rimini&localita_name=$1
    e non mi va nemmeno questo però noto che
    RewriteRule ^lidi-ravenna/(.
    ).php$ localita.php?zona_name=lidi-ravenna&localita_name=$1
    funziona (ch eguarda caso nella regola rewrite precedente non esiste mentre rimini si) alchè provo a fare
    RewriteRule ^hotel-rimini/(.).php$ localita.php?zona_name=rimini&localita_name=$1
    e funziona.
    A cosa può essere dovuto questo malfunzionamento?Non mi sembra sia un errore di programmazione perchè come ribadisco le querystring funzionano tutte a meraviglia
    Ho fatto poi quest'altra prova
    RewriteRule ^hotelrimini/(.
    ).php$ localita.php?zona_name=rimini&localita_name=$1
    e anche questa mi va in 404
    sembra ch equando trova una parola sola vad ain errore mentre con il - non più
    no ci capisco più nulla :arrabbiato: :arrabbiato: :arrabbiato:


  • Moderatore

    up


  • Super User

    :bho: finchè continui ad usare (.*) al posto di ([^/]+) continuerai ad avere potenziali problemi
    devi escludere lo slash dalla parte da riconoscere, in quanto è fisso nella tua regola

    ^(.)/(.).php$
    se scrivo x/y.php, rischio di riconoscerlo solo come $1

    ribadito questo concetto generale,
    prova a scrivere ad aruba.. la regola è corretta (sia teoricamente, che praticamente - lo hai visto tu stesso sul tuo dedicato)

    magari scrivi sul forum cosa ti rispondono 😉


  • Moderatore

    ciao osvi, ho fatto come dicevi tu e al posto dei (.*) ora ho i ([^/]+)

    Però non mi cambia nulla e in più se escludo gli slash dalla regola come faccio a fare i rewrite? Queste cose proprio non le capisco o meglio..no capisco dove sto sbagliando. Se la mia regola deve avere 2 variabili

    pippo/pluto.php

    la pagina paperino non dev'essere scritta così?
    ^([^/]+)/([^/]+).php$ paperino.php?nome1=$1&nome2=$2

    dove la pagina si richiama con http://www.miodominio.com/paperino.php?nome1=pippo&nome2=pluto

    :arrabbiato: :arrabbiato: dove sbaglio?