Transformando URL em variáveis
Thursday, September 29, 2011 2:24:27 PM
Eu sempre me perguntei como eles conseguiam transforma o endereço de URL sem mostrar as "variáveis", por assim se dizer.
Ex.:
http://www.flaviosilva.com?menu=Contato para
http://www.flavosilva.com/m/contato
E eu já cheguei a pensar que era uma pasta criada, esse tempo eu tinha medo de mim. Pensei também que fosse na personalização de página de erro, apesar de ter como fazer com ela também, não é a melhor forma.
Mas aqui está a solução, simples, fácil e rápido. Tudo em um pequeno arquivo chamado ".htacess" você transforma seu site XD.
Vou dar exemplos abaixo de como seria feito:
.htaccess
Porem falta um parte, o que ser [NC,L], relaxa são flags que podem ser resumidos da seguinte forma:
E chega a parte mais legal, executar essas ações somente sobre tal condição:
.htaccess
Código especiais de Expressão
Variáveis do servidor %{variável}
Connection Variables
Server Variables
Dates and Times
Special Items
[/LIST]
Ex.:
http://www.flaviosilva.com?menu=Contato para
http://www.flavosilva.com/m/contato
E eu já cheguei a pensar que era uma pasta criada, esse tempo eu tinha medo de mim. Pensei também que fosse na personalização de página de erro, apesar de ter como fazer com ela também, não é a melhor forma.
Mas aqui está a solução, simples, fácil e rápido. Tudo em um pequeno arquivo chamado ".htacess" você transforma seu site XD.
Vou dar exemplos abaixo de como seria feito:
.htaccess
#É necessário um leve conhecimento de expressão regular, você vai depender dela. RewriteRule ^m/([0-9a-z]+)/?$ index.php?menu=$1 [NC,L] # Ler assim: tudo que estive apos o m/(números e letras)/ finalizando na barra independentize do reque # venha depois redirecione para index.php?php?menu=[i]resultado da primeira expressão([0-9a-Z]+)[/i]
Porem falta um parte, o que ser [NC,L], relaxa são flags que podem ser resumidos da seguinte forma:
- C (chained with next rule)
- CO=cookie (Definir um cookie)
- E=var:value (set environment variable var to value)
- F (forbidden - sends a 403 header to the user)
- G (gone - no longer exists)
- H=handler (set handler)
- L (last - stop processing rules)
- N (next - continue processing rules)
- NC (case insensitive)
- NE (do not escape special URL characters in output)
- NS (ignore this rule if the request is a subrequest)
- P (proxy - i.e., apache should grab the remote content specified in the substitution section and return it)
- PT (pass through - use when processing URLs with additional handlers, e.g., mod_alias)
- R (temporary redirect to new URL)
- R=301 (permanent redirect to new URL)
- QSA (append query string from request to substituted URL)
- S=x (skip next x rules)
- T=mime-type (force specified mime type)
Por que em inglês, tecnicamente é mais fácil de se entender =D
E chega a parte mais legal, executar essas ações somente sobre tal condição:
.htaccess
# Condição para executar a próxima linha
RewriteCond %{HTTP_HOST} ^flaviosilva\.com [NC]
# Lendo: Se %{variável} for flaviosilva.com Redirecionar para http://www.flaviosilva.com/
# todos os paramentos
RewriteRule ^(.*)$ http://www.flaviosilva.com/$1 [NC,L]
Código especiais de Expressão
- < Pattern (is test string lower than pattern)
- > Pattern (is test string greater than pattern)
- = Pattern (is test string equal to pattern)
- -d (is test string a valid directory)
- -f (is test string a valid file)
- -s (is test string a valid file with size greater than zero)
- -l (is test string a symbolic link)
- -F (is test string a valid file, and accessible (via subrequest))
- -U (is test string a valid URL, and accessible (via subrequest))
Variáveis do servidor %{variável}
-
HTTP Headers
[LIST]
- HTTP_USER_AGENT
- HTTP_REFERER
- HTTP_COOKIE
- HTTP_FORWARDED
- HTTP_HOST
- HTTP_PROXY_CONNECTION
- HTTP_ACCEPT
Connection Variables
- REMOTE_ADDR
- REMOTE_HOST
- REMOTE_USER
- REMOTE_IDENT
- REQUEST_METHOD
- SCRIPT_FILENAME
- PATH_INFO
- QUERY_STRING
- AUTH_TYPE
Server Variables
- DOCUMENT_ROOT
- SERVER_ADMIN
- SERVER_NAME
- SERVER_ADDR
- SERVER_PORT
- SERVER_PROTOCOL
- SERVER_SOFTWARE
Dates and Times
- TIME_YEAR
- TIME_MON
- TIME_DAY
- TIME_HOUR
- TIME_MIN
- TIME_SEC
- TIME_WDAY
- TIME
Special Items
- API_VERSION
- THE_REQUEST
- REQUEST_URI
- REQUEST_FILENAME
- IS_SUBREQ
[/LIST]


