Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [mod_rewrite] - regole in conflitto

    Ciao
    ho queste due regole per mod_rewrite:
    codice:
    RewriteRule     ^(.*?)\-([^/]+)\.html$ /contenuti.php?id=$1 
    RewriteRule     ^(.*?)\-([^/]+)/(.*?)\-([^/]+)\.html$ /scheda.php?id=$3
    purtroppo vanno in conflitto, viene sempre eseguita la prima... come posso fare per differenziarle (cambiando la regola ma non la url...)

    grazie
    Manuel

    View my profile on LinkedIn
    Ubertini: amo solo te!

  2. #2
    Inverti l'ordine.
    La seconda è più restrittiva della prima.

  3. #3
    gia provato... stesso risultato

    il problema è che la prima dovrebbe entrare in funzione con una chiamata del tipo:

    http://www.miosito.it/12-categoria.html

    mentre la seconda con una url del tipo

    http://www.miosito.it/12-categoria/10-pagina.html

    invece quando chiamo con la seconda url, la regexp riconosce '12-categoria' e fa scattare la prima regola...

    senvirebbe una rewriteCond che potesse valutare il numero di elementi riconosciuti dalla regexp... guardando la documentazione di apache non ho trovato niente del genere
    Manuel

    View my profile on LinkedIn
    Ubertini: amo solo te!

  4. #4
    Originariamente inviato da Manuel.s
    gia provato... stesso risultato

    il problema è che la prima dovrebbe entrare in funzione con una chiamata del tipo:

    http://www.miosito.it/12-categoria.html

    mentre la seconda con una url del tipo

    http://www.miosito.it/12-categoria/10-pagina.html

    invece quando chiamo con la seconda url, la regexp riconosce '12-categoria' e fa scattare la prima regola...

    senvirebbe una rewriteCond che potesse valutare il numero di elementi riconosciuti dalla regexp... guardando la documentazione di apache non ho trovato niente del genere
    Prova qualcosa del genere...

    RewriteCond %{QUERY_STRING} ^(.*?)\-([^/]+)\.html$
    RewriteRule ^(.*?)\-([^/]+)\.html$ /contenuti.php?id=$1

    RewriteCond %{QUERY_STRING} ^(.*?)\-([^/]+)/(.*?)\-([^/]+)\.html$
    RewriteRule ^(.*?)\-([^/]+)/(.*?)\-([^/]+)\.html$ /scheda.php?id=$3


    facci sapere !

    stefano

  5. #5
    Ciao
    ti ringrazio per l'aiuto, a dire il vero ho risolto seguendo il consiglio di weppos e cioè invertendo le regole. ma questo non bastava: il problema era che anche se la seconda è piu restrittiva, anche se eseguita per prima il rewrite tende a eseguirle tutte e due, da cui l'errore.
    Ho risolto facendo in modo che la prima se eseguita sia anche l'ultima ad essere eseguita:

    codice:
    RewriteRule     ^(.*?)\-([^/]+)/(.*?)\-([^/]+)\.html$ /scheda.php?id=$3 [L]
    RewriteRule     ^(.*?)\-([^/]+)\.html$ /contenuti.php?id=$1
    grazie ancora a tutti

    Manuel

    View my profile on LinkedIn
    Ubertini: amo solo te!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.