Visualizzazione risultati 1 fino 7 di 7

Discussione: mod_rewrite: utilizzare punto di domanda e uguale non per Query String

  1. #1
    Guest

    Predefinito mod_rewrite: utilizzare punto di domanda e uguale non per Query String

    Il titolo forse non lo spiega e tento di farlo ora.
    Allora, ho una pagina forum.php che vorrei fosse raggiungibile così:
    Codice:
    RewriteEngine On
    #Da forum.php a community?forum
    RewriteRule ^community?forum$ forum.php [L]
    
    #Da forum.php?n= a community?forum=Nome+del+forum
    RewriteRule ^community?forum=([+a-zA-Z0-9]*)(\.html)?$ forum.php?n=$1 [L]
    
    #Da forum.php?t= a community?thread=ID_Titolo+del+topic
    RewriteRule ^community?thread=([0-9]*)_([+a-zA-Z0-9]*)(\.html)?$ forum.php?t=$1 [L]
    
    #Da forum.php?p= a community?post=ID
    RewriteRule ^community?post([0-9]*)(\.html)?$ forum.php?p=$1 [L]
    Nessuno di questo funziona, non capisco perché, per caso viene interpretato il tuto come Query String?
    Ringrazio in anticipo

  2. #2
    L'avatar di andreafallico
    andreafallico non è connesso Super Moderatore
    Data registrazione
    02-06-2009
    Messaggi
    1,981

    Predefinito

    Il carattere ?(punto interrogativo) è un metacarattere, che indica zero o una occorrenza (di un carattere o di un gruppo di caratteri).
    Per accertare l'esistenza di un punto interrogativo all'interno di una stringa devi mettere un backslash (\) davanti al punto interrogativo.
    Prova così:
    Codice:
    RewriteEngine On
    #Da forum.php a community?forum
    RewriteRule ^community\?forum$ forum.php [L]

  3. #3
    Guest

    Predefinito

    Avevo già provato e non funziona purtroppo, grazie andrea

  4. #4
    L'avatar di andreafallico
    andreafallico non è connesso Super Moderatore
    Data registrazione
    02-06-2009
    Messaggi
    1,981

    Predefinito

    E allora temo che non si può, perchè proprio quel carattere indica che inizia la query string.

  5. #5
    Guest

    Predefinito

    Vorrà dire che utilizzerò le direcotry virtuali!
    Grazie

  6. #6
    programmazioned non è connesso Utente attivo
    Data registrazione
    25-03-2008
    Messaggi
    440

    Predefinito

    Perchè non riscrivere semplicemente forum.php come community, gestendo poi la querystring via php?

    Se comunque sei convinto di voler proseguire su questa strada, ti faccio un esempio con la seconda regola:
    Codice:
    RewriteCond %{QUERY_STRING} ^forum=([+a-zA-Z0-9]*)(\.html)?$
    RewriteRule ^community?$ forum.php?n=%1 [L]
    Ciao!
    Ultima modifica di programmazioned : 13-02-2010 alle ore 18.31.48

  7. #7
    Guest

    Predefinito

    Perché i non voglio si veda la query string e perché avrei utilizzato il prefisso anche per gli utenti (community?user=Nome+Utente) nella pagina con url index.php?view=u&n=Nome+Utente, non solo per il forum!
    Se avessi dovuto gestire tutto tramite quesy string avrei fatto subito così:
    Codice:
    RewriteRule ^community.+ ./forum.php?%{QUERY_STRING} [L]
    anche se con il tuo metodo posso controllare anche la query string tramite le reg_exp ed è migliore.
    Sempre grazie ovviamente
    Ultima modifica di biccheddu : 13-02-2010 alle ore 18.37.55

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •