Domanda

Qualcuno può spiegare cosa sta facendo questa regola mod_rewrite?

Sto cercando di commentare il file, ma il codice sembra indicare il contrario di quello che penso stia facendo

# Enable rewriting of URLs
RewriteEngine on


# Allow specified file types to be accessed
# Thing to test = URL
# Condition = not starting with  
RewriteCond $1 !^(index\.php|images|css|js|robots\.txt)


# RewriteRule will only be performed if the preceeding RewriteCond is fulfilled
# Remove index.php from all URLs     
# Pattern = anything (0 or more of any character)
# Substitution = index.php + the rest of the URL    
RewriteRule ^(.*)$ /index.php/$1 [L]  
È stato utile?

Soluzione

^ = begin of line
( = begin group
.* = any character, any number of times
) = end group

I $ 1 nella seconda parte sono sostituiti dal gruppo nella prima parte.

È una regola di Symfony? L'idea è di passare l'intera stringa di query a index.php (il front controller) come parametro, in modo che il front controller possa analizzarlo e instradarlo.

Altri suggerimenti

Il browser invia una richiesta al server (Apache, poiché stai usando mod_rewrite):

OTTIENI profilo / modifica

Apache accetta questa richiesta e vede nei suoi file di configurazione che l'hai configurata per passare tutte le richieste attraverso mod_rewrite. Quindi, invia la stringa 'profilo / modifica' a mod_rewrite. Mod_rewrite applica quindi le regole che gli hai specificato, che trasforma la richiesta (come ho spiegato nel mio precedente post) in "index.php / profilo / modifica". Dopo che mod_rewrite è terminato, Apache continua a elaborare la richiesta e vede "oh, questo ragazzo sta richiedendo il file index.php". Quindi chiama l'interprete php che quindi analizza ed esegue index.php - e ottiene '/ profile / edit' come argomenti. Il codice php (CI nel tuo caso) analizza questi argomenti e sa come chiamare il modulo giusto nella tua applicazione.

Quindi, in sostanza, è un modo per chiamare sempre index.php, anche quando l'URL non specifica index.php. In questo modo, index.php funziona come front controller: instrada tutte le richieste nella posizione corretta nella tua applicazione.

Se l'URL non inizia con index.php o immagini o css o js o robots.txt, la stringa " /index.php/" ha il prefisso.

Dato che index.php è probabilmente un'app php eseguibile, index.php può quindi leggere il resto dell'URL dal suo ambiente cgi. (è memorizzato in $ {PATH_INFO})

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top