• User Attivo

    Redirect da pagina dinamica a pagina dinamica

    Buonasera,

    ho tentato di scrivere questo:

    RewriteRule ^cartella/index\.php?gallery=pippo$ cartella/index.php?gallery=paperino [R=301]
    

    ma con scarsi risultati. 😞

    Quale è il modo corretto di scriverlo?


  • User Attivo

    Prova così

    RewriteCond %{REQUEST_URI} ^cartella/index\.php$
    RewriteCond %{QUERY_STRING}  ^gallery=pippo$
    RewriteRule (.*) cartella/index.php?gallery=paperino [R=301]
    

    😉


  • User Attivo

    Ciao, e grazie per la risposta.

    Ho provato come mi hai suggerito ma sembra non funzionare.

    Forse dovevo specificare che sono su server windows (con isapirewrite)?


  • User Attivo

    Lavoro solo su apache, quindi grazie alla mia scarsa conoscenza di IIS potrei sbagliarmi, ma credo che IIS non abbia la REQUEST_URI...

    La buona notizia è che potrebbe essere questo il motivo per il quale non funziona la rewrite.

    La cattiva notizia è che non so come aiutarti, mi spiace. Per darti una mano dovrei cercare su google, ma credo che questo lo sappia fare anche tu 😉
    In alternativa attendiamo qualcuno che ne sappia di più...


  • User Attivo

    Grazie per la risposta,

    cercando un po su google, ho provato a mettere questo in fondo all' .htaccess:

    RewriteBase /cartella/
    RewriteCond %{QUERY_STRING} gallery=pippo[.*]*
    RewriteRule ^index\.php$ index.php?gallery=paperino [R=301,L]
    

    Il problema è che, in questo modo, funzionano solo i redirect relative alle pagine che sono nella sottodirectory cartella/


  • User Attivo

    puoi sempre utilizzare la riscrittura assoluta anteponendo "/" all'indirizzo di rewrite...
    altrimenti puoi togliere il rewritebase e inserire l'htaccess direttamente all'interno di "cartella", così le direttive valgono solo all'interno di quest'ultima...

    La condizione sulla query da sola la eviterei per siti grandi, perché la condizione viene testata per qualsiasi file che venga richiamato con una variabile gallery impostata su "pippo". Per un sito piccolo non hai problemi, ma se il sito è grande è meglio limitare l'htaccess a poche istruzioni (efficienti) per volta.


  • User Attivo

    @lucabartoli said:

    puoi sempre utilizzare la riscrittura assoluta anteponendo "/" all'indirizzo di rewrite...

    Non ho capito, potresti farmi un esempio?

    @lucabartoli said:

    altrimenti puoi togliere il rewritebase e inserire l'htaccess direttamente all'interno di "cartella", così le direttive valgono solo all'interno di quest'ultima...

    Ho provato, ma sembra non funzionare! 😞

    @lucabartoli said:

    La condizione sulla query da sola la eviterei per siti grandi, perché la condizione viene testata per qualsiasi file che venga richiamato con una variabile gallery impostata su "pippo". Per un sito piccolo non hai problemi, ma se il sito è grande è meglio limitare l'htaccess a poche istruzioni (efficienti) per volta.

    E' un sito non molto grande... poi mi serve soprattutto per capire come funziona 'sto htaccess su server windows..! :mmm:


  • User Attivo

    Quando inserisci "cartella/index.php" indichi che vuoi la pagina index.php dentro a "cartella" e che "cartella" si trova nella directory attuale.
    Se invece utilizzi "/cartella/index.php" stai dicendo che vuoi la pagina index.php che si trova in "cartella", e che "cartella" è posta nella root del sito.

    Prova così:

    RewriteCond %{QUERY_STRING} gallery=pippo[.*]*
    RewriteRule ^cartella/index\.php$ /cartella/index.php?gallery=paperino [R=301,L]