Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde para todos, estou tentando implementar expressões regulares no meu sistema,
atualmente ao clicar em algum item, por exemplo para editar um produto o link é:
produtoAlterar.php?id=[iD DO REGISTRO ENCRIPTADO]
o que eu gostaria é que ficasse deste forma:
produtoAlterar/[iD DO REGISTRO ENCRIPTADO]
pelo que eu andei pesquisando, isto se chama url amigavel, e na minha ignorância, ficaria assim?
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9_-]+)$ produtoAlterar.php?id=$1
RewriteRule ^([a-zA-Z0-9_-]+)$ produtoExcluir.php?id=$1
dai eu teria que por uma regra para cada página PHP?
Nesse seu caso, sim.
Com expressões regulares, você pode definir que a regra se restrinja a uma pasta (ou root), arquivos (prefixo, sufixo, extensão).
Entretanto, as regras precisam possuir um ponto de diferença (que e exatamente o que o ESerra está descrevendo).
Ok, e o php, tenho que fazer alguma coisa ou não preciso alterar nada?
A princípio nada. Mas tudo depende da forma que você irá realizar a conversão.
O apache somente realizará a conversão de entrada. Da URL amigável para o padrão que o PHP já estava esperando receber.
qndo tento usar o sistema com o .taccess, ele esta me retornando isto:
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator at admin@example.com to inform them of the time this error occurred, and the actions you performed just before this error.
More information about this error may be available in the server error log.
Acabei de testar um htacess apenas com:
RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)\/([a-zA-Z0-9_-]+)$ $1.php?id=$2
E funcionou como esperado... se você tiver mais coisa no htaccess, esse pode ser o problema.
cara...
minha url é assim:
http://localhost/interno2/produtoSaidaIncluir.php
e continua dando o erro, o meu .htaccess só tem o teu código, não tem que liberar nada no php.ini ou algo parecido?
O PHP sequer "sabe" que existe URL amigável...
Veja se o mod_rewrite está ativo no seu localhost...
Primeiro que as duas regras são exatamente iguais, logo isso dai nunca vai funcionar.
Segundo, se você deseja apenas alterar de:
nomeDoArquivo.php?id=algumacoisa
para
nomeDoArquivo/algumacoisa
Você pode usar a algo mais simples:
RewriteRule ^([a-zA-Z0-9_-]+)\/([a-zA-Z0-9_-]+)$ $1.php?id=$2