Rewrite Rules .htaccess que confuso - Versão de Impressão +- Forum Pplware (http://forum.pplware.com) +-- Fórum: Mais Tech (/forumdisplay.php?fid=11) +--- Fórum: Programação e Web (/forumdisplay.php?fid=16) +--- Tópico: Rewrite Rules .htaccess que confuso (/showthread.php?tid=7169) |
Rewrite Rules .htaccess que confuso - maghnetico - 17-09-2010 19:36 Boas! Tenho um site em php com o modulo mod_rewrite ligado. Pretendo re-escrever as urls do tipo www.site.com/index.php?menu=xxxx para www.site.com/xxxx E para isso puz a seguinte regra no .htaccess que funciona perfeitamente: RewriteEngine on RewriteRule ^([^/\.]+)/?$ /index.php?menu=$1 [L] mas tenho um outro problema: existe outra variável que é "stock" ou seja tenho ficheiros a apontar para www.site.com/index.php?stock=55 como faço para alem de reescrever a variavel "menu", reescrever também a variavel "stock" Esta regra não funciona: RewriteRule ^([^/\.]+)/?$ /index.php?stock=$1 [L] alem disto, queria que fosse reescrito para http://www.site.com/pastacategoria/55 o php processa-se todo no meu index.php Gratos! RE: Rewrite Rules .htaccess que confuso - Bruno Bernardino - 17-09-2010 19:46 O teu problema é que estás a dizer ao Apache que qualquer coisa que esteja em http://www.site.com/YYY "seja executado" como http://www.site.com/index.php?menu=YYY e não o contrário. Daí que, tens de conseguir "identificar" no Apache se é um menu ou stock.. assim de cabeça (não sei se funciona, testa e diz), terias de fazer algo como: RewriteEngine on RewriteRule ^(stock/([^/\.]+)/?$ /index.php?stock=$1 [L] RewriteRule ^(menu/[^/\.]+)/?$ /index.php?menu=$1 [L] Para que conseguisses separar por http://www.site.com/stock/YYY e http://www.site.com/menu/YYY Outra forma, seria enviares as duas variáveis seguidas, do tipo http://www.site.com/YYY/KKK em que YYY seria o menu, e KKK o stock: RewriteEngine on RewriteRule ^([^/\.]+)/?$ /index.php?menu=$1&stock=$2 [L] RE: Rewrite Rules .htaccess que confuso - maghnetico - 17-09-2010 20:10 Não funcionou... O que aconteceu foi um internal server error Não sei se é por as pastas stock e menu nao existirem de facto no servidor. Mantive a regra inicial que tinha e acrescentei apenas a regra ^(stock/([^/\.]+)/?$ /index.php?stock=$1 [L] mas sem a palavra stock ou seja ficou assim: RewriteEngine on RewriteRule ^([^/\.]+)/?$ /index.php?stock=$1 [L] RewriteRule ^([^/\.]+)/?$ /index.php?menu=$1 [L] e funcionou (!?) ou seja igual ao que tinhas mas na ordem que me deste (primeiro stock e dps menu). Não sei se é disso mas de facto funcionou.. só que se meter o tal nome stock atrás (RewriteRule ^(stock/([^/\.]+)/?$ /index.php?stock=$1 [L]) dá Internal server error e o que queria de facto era escrever o link deste modo: http://www.site.com/stock/55 e nao http://www.site.com/55. |