Visualizzazione risultati 1 fino 24 di 24

Discussione: mod_Rewrite, estensioni dinamiche ed espressioni regolari, controllo punteggiatura

  1. #1
    Guest

    Predefinito mod_Rewrite, estensioni dinamiche ed espressioni regolari, controllo punteggiatura

    ALlora ragazzi, sto impazzendo con queste espressioni regolari.

    Allora, devo fare in modo di poter visualizzare un file con estensione dinamica, anche se questa non è presente, mi spiego meglio.

    Ho index.php e vorrei sia visualizzata con index, index.html e index.quellochevoglio

    Quindi sarà una cosa simile:
    Codice:
    RewriteRule ^index([[[:punct:]]{1}][a-z]*)$ ./index.php [L]
    poi ho provato con:
    Codice:
    RewriteRule ^index([[.,!?:...]{1}][a-z]*)$ ./index.php [L]
    ma mi viene restituito sempre un 404.

    Sapreste aiutarmi per favore?

    grazie in anticipo

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

    Predefinito

    Codice:
    ^index(\.(.*))?$
    ?

    Ciao!
    Matteo Micanti.
    Ultima modifica di programmazioned : 25-08-2009 alle ore 14.16.20

  3. #3
    Guest

    Predefinito

    Internal Server Error.

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

    Predefinito

    L'espressione regolare che ho postato sono quasi certo che funzioni, quindi non dovrebbe essere lì l'errore.

    Piuttosto, hai impostato la RewriteBase?
    Prova anche a togliere quel "./" davanti a "index.php".

    Se ancora non funziona, posta l'htaccess completo.

    Ciao!
    Matteo Micanti.
    Ultima modifica di programmazioned : 25-08-2009 alle ore 16.19.41

  5. #5
    Guest

    Predefinito

    Allora, devo inserire il RewriteBase obbligatoriamente e togliere come detto ./


    Però non mi si visualizza la pagina se lascio solo index o index., sono obbligato ad inserire l'estensione e vorrei poter evitare anche questo

    Grazie ancora

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

    Predefinito

    Però non mi si visualizza la pagina se lascio solo index o index., sono obbligato ad inserire l'estensione e vorrei poter evitare anche questo
    Se ho capito bene questo non dovrebbe accadere, l'espressione regolare fa sì che sia il punto sia l'estensione conseguente siano facoltativi (l'espressione termina con "?").

    Inoltre ho appena provato l'htaccess nel mio spazio e sembra funzionare correttamente.
    Btw, hai inserito qualche altra direttiva?

    Posta l'htaccess completo, e magari un url di esempio :)

    Ciao!
    Matteo Micanti.
    Ultima modifica di programmazioned : 25-08-2009 alle ore 17.49.01

  7. #7
    Guest

    Predefinito

    Io ho questo .htaccess:
    Codice:
    RewriteEngine On
    RewriteBase /fedeb/
    
    <Files "config.php">
    Order Allow,Deny
    Deny from All
    </Files>
    
    <Files "common.php">
    Order Allow,Deny
    Deny from All
    </Files>
    
    #RewriteRule ^forum([[.,!?:...]{1}][a-z]*)$ ./forum.php [L]
    RewriteRule ^forum(\.([a-zA-Z0-9]*))$ forum.php [L]
    RewriteRule ^index(\.([a-zA-Z0-9]*))$ index.php [L]
    
    RewriteRule ^vf([0-9]*)-vt([0-9]*)-vp([0-9]*).+ ./viewtopic.php?%{QUERY_STRING}&f=$1&t=$2&p=$3 [L]
    RewriteRule ^vf([0-9]*)-vt([0-9]*).+ ./viewtopic.php?%{QUERY_STRING}&f=$1&t=$2 [L]
    RewriteRule ^vf([0-9]*)-vp([0-9]*).+ ./viewtopic.php?%{QUERY_STRING}&f=$1&p=$2 [L]
    
    RewriteRule ^vf([0-9]*).+ ./viewforum.php?%{QUERY_STRING}&f=$1 [L]
    RewriteRule ^vt([0-9]*).+ ./viewtopic.php?%{QUERY_STRING}&t=$1 [L]
    RewriteRule ^vp([0-9]*).+ ./viewtopic.php?%{QUERY_STRING}&p=$1 [L]
    Url di esempio non ne ho perchè sto lavorando in locale e non ho niente pronto per poter installare in remoto

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

    Predefinito

    E' magicamente scomparso il "?"

    Codice:
    RewriteRule ^index(\.([a-zA-Z0-9]*))?$ index.php [L]
    Ciao!
    Matteo Micanti.
    Ultima modifica di programmazioned : 25-08-2009 alle ore 18.09.21

  9. #9
    Guest

    Predefinito

    Grazie mille, non mi sono accorto di averlo cancellato, sicuramente l'ho perso nel mentre che copiavo e incollavo nella vecchia stringa

    Per caso è possibile farlo case-insensitive?

    Cioè, anche se vado a Forum, perchè se provo restituisce 404. Però Forum sarà visualizzabile solo se NON sarà presente l'estensione.

    PS: Sto facendomi un CMS, quindi faccio dei controlli per tutte queste cose e sono leggermente perfezionista in questi lavori

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

    Predefinito

    Codice:
    ^(forum(\.([a-zA-Z0-9]*))?|Forum)$
    renderà valide le seguenti espressioni:

    • Forum
    • forum
    • forum.
    • forum.[a-zA-Z0-9]


    Ciao!
    Matteo Micanti.
    Ultima modifica di programmazioned : 25-08-2009 alle ore 18.43.29

  11. #11
    Guest

    Predefinito

    Grazie infiite, nel caso abbia ancora problemi con il mod_rewrite posto qui

  12. #12
    Guest

    Predefinito

    Riposto in questo topic perchè ho problema. Ho scritto questa regola:
    Codice:
    RewriteRule ^([+a-zA-Z0-9]*)(\.([a-zA-Z0-9]*))?$ ./index.php?name=$1 [L]
    E ho provato anche così:
    Codice:
    RewriteRule ^(([+a-zA-Z0-9]*)(\.([a-zA-Z0-9]*))?)$ ./index.php?name=$1 [L]
    Mi viene restituio sempre 500 Internal Server Error, non capisco perchè... Se totlo la prima espressione regolar ein vece tutto funziona alla grande!

    in poche parolesto usando urlencode() per la prima parte, mentre la seconda è per l'estensione non obbligatoria.

  13. #13
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    beh, index.php ricade sotto quella regola no? quindi si forma un ciclo infinito. Prova con
    Codice:
    RewriteCond %{REQUEST_URI}  !^index.php$
    RewriteRule ^(([+a-zA-Z0-9]+)(\.([a-zA-Z0-9]+))?)$ ./index.php?name=$1
    ti ho cambiato anche gli * in + nella regola, altrimenti accetti anche sequenze vuote

  14. #14
    Guest

    Predefinito

    Internal Server Error sempre

  15. #15
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    verificato, qua funziona
    Codice:
    RewriteEngine On
    
    RewriteCond %{REQUEST_URI}  !^/index\.php$
    RewriteRule ^(([+a-zA-Z0-9]+)(\.([a-zA-Z0-9]+))?)$   index.php?name=$1
    Ho aggiunto una barra davanti al nome nella RewriteCond per sicurezza, e rimossa quella superflua nella RewriteRule, ma l'errore non e' in quelle due righe. C'e' altro nel file? In altri file in cartelle in quel path?

    Bonus: [a-zA-Z0-9] e' in fondo uguale a [\w]
    Ultima modifica di dreadnaut : 16-10-2009 alle ore 17.05.11

  16. #16
    Guest

    Predefinito

    Ho notato che se cancello ./ dalla RewriteRule, non mi mostra errore.

    Questo è il codice completo:
    Codice:
    <Files "config.php">
    Order Allow,Deny
    Deny from All
    </Files>
    
    <Files "common.php">
    Order Allow,Deny
    Deny from All
    </Files>
    
    RewriteEngine On
    
    RewriteRule ^forum.html$ forum.php
    
    RewriteCond %{REQUEST_URI} !^/index\.php$
    RewriteRule ^(([+a-zA-Z0-9]+)(\.([a-zA-Z0-9]+))?)$ index.php?name=$1
    Se inserisco il tuo codice non mi carica i css e mi mostra tutto sballato

    Mentre se scrivo solo:
    Codice:
    RewriteRule ^([+a-zA-Z0-9]+).html$ ./index.php?name=$1 [L]
    e nell'indirizzo scrivo Nome+prova.html tutto funziona perfettamente.

  17. #17
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Citazione Originalmente inviato da biccheddu Visualizza messaggio
    Se inserisco il tuo codice non mi carica i css e mi mostra tutto sballato
    Mi sembra ovvio Dei css non ne sapevo nulla, quindi l'eccezione che ho inserito vale solo per index.php, no?

  18. #18
    Guest

    Predefinito

    Lo hai fatto inserendo RewriteCond %{REQUEST_URI} !^/index\.php$ vero?

    Scusami, ma non sono molto ferrato conl'htaccess però ho omlta voglia di imparare

  19. #19
    Guest

    Predefinito

    Ragazzi una domanda sul mod_rewrite la posso fare qui oppure nuovo post?

  20. #20
    Data registrazione
    04-09-2009
    Messaggi
    183

    Predefinito

    Citazione Originalmente inviato da zomer Visualizza messaggio
    Ragazzi una domanda sul mod_rewrite la posso fare qui oppure nuovo post?
    dipende cosa devi chiedere -_-
    Age Of Empires GIF Creator & Archive
    New! Blog informatico di scripting PHP avanzato
    Vuoi giocare online a Age of Empires The Conquerors? -> Usa Voobly !! (MSN Zone non lo supporta più dal 19 giugno 2006)
    Il mio clan di The Conquerors -> Rifugio dei Conquerors
    Il mio stato su Xfire Live Video -> Unreal Tournament 2004
    Facebook MMORPG

  21. #21
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    @zomer: in un nuovo post direi, a meno che non sia sul problema particolare

    @biccheddu: si, RewriteCond %{REQUEST_URI} !^/index\.php$ va letta come "se l'indirizzo richiesto non (!) e' index.php, allora esegui la riga successiva.

    Putroppo per imparare mod_rewrite in modo da non dover piu' lottare alla cieca contro 500 Server Error puoi solo leggerti la guida di apache piano piano. Alla fine bastano l'introduzione, che spiega l'ordine di valutazione delle regole, e le sezioni su RewriteRule e (se vuoi) RewriteCond e RewriteBase. Non fa troppo male

  22. #22
    Guest

    Predefinito

    Ho fato prove in locale ed emerge che il problema è il punto!
    In qualsiasi posizione lo metta mi generar eun errore del server, come è possibile?

    Per la guida lo farò, appena capirò qualcosa in più d'inglese

  23. #23
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Ricordati che il "+" viene tradotto automaticamente in uno spazio, quindi non è il migliore dei caratteri. Usa un trattino o una sottolineatura ( - / _ ).

    Il punto, quale? e perché a me funziona? E ricordati che nel pattern (il primo parametro della regola) il punto vuol dire "un carattere qualunque", mentre se intendi proprio un punto, allora devi proteggerlo scrivendo \. -- Nella seconda parte no, un punto è un punto.

    Codice:
    RewriteEngine On
    
    RewriteRule ^forum\.html$ forum.php
    
    RewriteCond %{REQUEST_URI} !^/index\.php$
    RewriteRule ^(([+a-zA-Z0-9]+)(\.([a-zA-Z0-9]+))?)$ index.php?name=$1

  24. #24
    Guest

    Predefinito

    Allora, il + voglio che venga inserito perchè uso urlencode(), per avere: Nome+della+sezione.
    Ho messo un \ prima del + nella classe della sottostringa, indica una o più occorrenze no?
    Comunque mi mostra sempre lo stesso errore! Non capisco perchè

Regole di scrittura

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