Pergunta

Alguém pode explicar o que esta regra mod_rewrite está fazendo?

Eu estou tentando comentar o arquivo, mas o código parece afirmar o contrário do que eu acho que ele está fazendo

# 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]  
Foi útil?

Solução

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

A $ 1 na segunda parte é substituído pelo grupo na primeira parte.

Esta é uma regra Symfony? A idéia é passar toda a cadeia de consulta ao index.php (o controlador frontal) como um parâmetro, para que o controlador de frente pode analisar e encaminhá-lo.

Outras dicas

O navegador envia uma solicitação para o servidor (Apache, desde que você está usando mod_rewrite):

perfil GET / editar

Apache aceita este pedido e vê em seus arquivos de configuração que você configurou-la para passar todas as solicitações através mod_rewrite. Então, ele envia a string 'profile / Editar' para mod_rewrite. Mod_rewrite seguida, aplica as regras especificadas a ele, que, em seguida, transforma o pedido (na forma como expliquei no meu post anterior) para 'index.php / perfil / editar'. Depois mod_rewrite é feito, Apache continua a processar a solicitação, e vê 'oh, esse cara está solicitando o index.php arquivo'. Então ele chama o interpretador de php que em seguida, analisa e executa index.php - e recebe '/ perfil / editar' como argumentos. O código php (CI no seu caso) analisa estes argumentos e sabe como chamar o módulo de direito na sua aplicação.

Então, basicamente, é uma maneira de sempre chamar index.php, mesmo quando a url não especifica index.php. Dessa forma, as obras index.php como o controlador de frente:. Ele encaminha todas as solicitações para o local correto em seu aplicativo

Se a URL não começa com index.php ou imagens ou css ou js ou robots.txt, o "/index.php/" string é prefixado.

Como index.php é provavelmente um aplicativo php executável, o index.php, em seguida, pode ler o resto do URL do seu ambiente cgi. (Ele é armazenado em $ {PATH_INFO})

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top