Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal,
Estou com problemas na hora de mascarar minhas URLs usando o Rewrite do Apache.
Não entendi muito bem como fazer as expressões, pesquiso na internet, mas não evoluo muito.
Eu tenho um arquivo .htaccess no meu diretório raíz. Esse arquivo está exatamente assim:
>
php_flag short_open_tag on
php_flag display_errors off
RewriteEngine on
RewriteRule ^editar\/?$ /parceiros\/editarParceiro.php?id=$1
Porém, do jeito que está nada acontece, eu acesso, através de link ou digitando na mão, por exemplo, a seguinte URL: http://localhost/prymexx/_admin/parceiros/editarParceiro.php?id=3, que uma quero mascarar, e nada acontece. Se eu mexo na expressão que está no htaccess começa a dar Erro 500.
Se alguém puder me ajudar, agradeço.
William,
Fiz o que você falou e não funcionou.
Estou fazendo assim:
Dentro do diretorio raiz do projeto eu tenho um arquivo .htaccess e tambem um subdiretorio "_admin/"
Meu arquivo htaccess está assim:
>
php_flag short_open_tag on
php_flag display_errors off
RewriteEngine on
RewriteRule ^editar\/?$ /parceiros\/editarParceiro.php?id=$1
Coloquei o link de forma curta (http://localhost/prymexx/_admin/parceiros/editar/3) e dá erro 404 (page not found).
No meu PHP, dentro do diretorio "_admin/parceiros/", substitui o link
<a href="editarParceiro.php?id=<?=$controle->parceiros[$i]->getId();?>" title="Editar parceiro"> pelo link <a href="editar/<?=$controle->parceiros[$i]->getId();?>" title="Editar parceiro">. Mas será que o htacces está certo?
Conto com a ajuda de vocês.
Estou meio atrasado agora, mas, tenta ai :
Options +FollowSymLinks
RewriteEngine on
RewriteRule editar/(.*)$ /prymexx/_admin/parceiros/editarParceiro.php?id=$1
O link deve ser
/editar/200
Bom, quando eu chegar do trampo eu avalio melhor :) Abraços
Valeu.
Funcionou.
Mas gostaria de saber como faço quando eu tenho duas variaveis. Por exemplo:
/prymexx/_admin/parceiros/ativarDesativar.php?id=$1&situacao=$2
Como represento essa segunda variavel - situacao - no link curto?
ai você pode decidir cara... contanto que a tua regra siga a mesma logica..
href="editar/10/8"ou sei la..
href="editar/10/id/8"
só depende da tua ER.
Mas como faço isso no htacces?
Seria assim:
RewriteRule alterarStatus/(.)$/(.)$ /prymexx/_admin/parceiros/ativarDesativar.php?id=$1&situacao=$2
E o link seria assim: alterarStatus/10/Ativo ??
Seguido o molde, teremos:
Options +FollowSymLinks
RewriteEngine on
RewriteRule editar/(.)/(.)$ /prymexx/_admin/parceiros/editarParceiro.php?id=$1&situacao=$2
O link da mesma maneira:
/editar/200/algo
Suponha que você queira apenas uma ulr do tipo:
http://www.seudominio.com.br/parceiro-200-ativo
Teriamos algo do tipo:
Options +FollowSymLinks
RewriteEngine on
RewriteRule parceiro-(.)-(.)$ /prymexx/_admin/parceiros/editarParceiro.php?id=$1&situacao=$2
Qualquer dúvida avisa.
Pessoal,
Não querendo abusar, mas já abusando.
Eu tentei antes de psotar, mas realmente não estou conseguindo. Mudei o link para alterar e para incluir o parceiros, ambos funcionaram. O problema agora, que não estou conseguindo resolver, é que quando eu clico no link para alterar a situação do parceiro(isso já alterei), o arquivo php que é chamado faz a alteração e chama outro arquivo php, passando pela url o parametro o que foi feito. Com essa mudança no link, isso parou de funcionar, já tentei mudar o link que é chamado após a alteração e nada.
É assim, eu clico em alterarStatus/parceiro-10-Ativo, esse link chama o arquivo ativarDesativar, que está assim:
$id = $_GET["id"];
$situacao = $_GET["situacao"];
if($situacao == "Ativo")
{
$novaSituacao = "I";//Inativo
$msg = "desativado";
}
else
{
$novaSituacao = "A";//Ativo
$msg = "ativado";
}
if($controle->alterarSituacaoParceiro($id, $novaSituacao))
{
header("Location: sucesso.php?acao=$msg");
}
Dentro desse PHP que é chamado existe outro direcionamento, que eu tentei mapear no htaccess, mas sem sucesso. A alteração do status funciona, o problema é que não é msotrado a mensagem de sucesso ou erro, pois não consigo executar a parte desse PHP referente a isso (a ultima linha).
Não sei se resolvo isso com htaccess, mas o meu está assim:
>
Options +FollowSymLinks
RewriteEngine on
RewriteRule editar/(.*)$ /prymexx/_admin/parceiros/editarParceiro.php?id=$1
RewriteRule parceiro-(.)-(.)$ /prymexx/_admin/parceiros/ativarDesativar.php?id=$1&situacao=$2
RewriteRule excluir/(.*)$ /prymexx/_admin/parceiros/excluirParceiro.php?id=$1
RewriteRule sucesso/ /prymexx/_admin/parceiros/sucesso.php?acao=(.*)$
Mais uma vez, conto com a ajuda de voces.
Agradeço desde já.
Pessoal,
Alguem pode me ajudar a resolver esse problema do redirecionamento do meu arquivo PHP?
Pessoal,
Acho que consegui aqui.
Valeu mesmo pela ajuda de voces.
Abraços.
então cara, você precisa editar os links
trocando o
<a href="parceiro/editarParceiro.php?id=10">..
por
<a href="editar/10">..entendeu ?
oq o modorewrite vai fazer, é traduzir o href="editar/10" para href="parceiro/editarParceiro.php?id=10"
mas note, que você deve colocar a forma 'reduzida' no teu html.