2015-05-17 7 views
6
RewriteRule ^([a-z]).php$ /index.php?zig=$1 [NC,L] # working 

Questa regola funziona correttamente. MaRewriteRule non funziona con il carattere più (+ o *)

RewriteRule ^([a-z]+).php$ /index.php?zig=$1 [NC,L] # not working 

o

RewriteRule ^([a-z]\+).php$ /index.php?zig=$1 [NC,L] # not working 

non funziona. La differenza è (+). Come utilizzare + nel codice sopra?

+0

Suggerimento: la frase "non funziona" deve essere evitata nelle descrizioni dei problemi. È troppo vago. Invece, descrivi con precisione cosa succede (con evidenza!) E spiega come differisce da quello che volevi accadesse invece. Non possiamo divinare ciò che vuoi ottenere dal codice che, per tua stessa ammissione, non ottiene quella cosa! :) –

risposta

3

Questa regola va bene:

RewriteRule ^([a-z]+)\.php$ /index.php?zig=$1 [NC,L] 

ma creerà un ciclo infinito riscritta URI /index.php partite anche il modello di espressione regolare. Per evitare questo è necessario paio di modifiche, come prevenire i file/directory da questa riscrittura e la fuga il punto in quanto è un carattere speciale meta regex:

# If the request is not for a valid directory 
RewriteCond %{REQUEST_FILENAME} !-d 
# If the request is not for a valid file 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([a-z]+)\.php$ index.php?zig=$1 [QSA,NC,L] 

QSA (Query String Aggiungi) bandiera conserva i parametri di ricerca esistente, mentre l'aggiunta di un nuovo.

+1

Grazie. Funziona. –

Problemi correlati