Leandromx 0 Denunciar post Postado Novembro 29, 2010 Olá pessoa, Seguinte eu uso url amigaveis em vários projetos. Mas sempre tenho que inserir um base href='site.com.br' Estava vendo por ai que alguns sites não usa essa tag base O que posso estar fazendo para eu não precisar usar a base href ? Segue meu .htaccess RewriteEngine on DirectoryIndex main.php RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ main.php?pg=$1&url=$2&id=$3 Compartilhar este post Link para o post Compartilhar em outros sites
Artur ~ 0 Denunciar post Postado Novembro 29, 2010 utilize RewriteEngine On RewriteCond %{SCRIPT_FILENAME} !-f RewriteCond %{SCRIPT_FILENAME} !-d RewriteRule ^(.*)$ index.php?pg=$1&url=$2&id=$3 Compartilhar este post Link para o post Compartilhar em outros sites
Leandromx 0 Denunciar post Postado Novembro 29, 2010 Sem chance assim não rola cara. Fica faltando as imagens. Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Novembro 29, 2010 você está sendo 'muito guloso' na sua ER: (.*) tente não ser tão 'genérico', cuidado com os curingas. especifique mais, limitando a a-z0-9 e outros sinais, se você não sobrescrever o . (ponto), não terá problemas com imagens, css... Compartilhar este post Link para o post Compartilhar em outros sites
Leandromx 0 Denunciar post Postado Novembro 29, 2010 Entendi. Eu tentei de duas maneiras E mesmo assim não rolou RewriteRule ([a-zA-Z0-9_-]*)\/?([a-zA-Z0-9_-]*)$ main.php?pg=$1&url=$2&pagina$3 RewriteRule ^([0-9]+)\/([0-9]+)\/([0-9]+)\/([A-Za-z-]+)$ main.php?pg=$1&url=$2&pagina$3 Compartilhar este post Link para o post Compartilhar em outros sites
Haz 3 Denunciar post Postado Novembro 29, 2010 O ideal pra você seria recuperar tudo em uma única query string (ex: main.php?page=aaa/bbb/ccc) e tratar com o próprio PHP. Assim fica mais fácil pra gerenciar a estrutura das páginas. Não precisa desfazer a sua lógica com $_GET['pg'], $_GET['url'] e $_GET['pagina'], basta tratar o $_GET['page'] e dividí-lo adequadamente entre essas últimas usando o PHP. Costumo usar um .htaccess como este sem problemas: <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule (.*) index.php?page=$1 [QSA,L] </IfModule> A flag QSA significa [Q]uery tring [A]ppend e determina o comportamento da inserção da query string, se ela substituirá a query string existente ou se simplesmente será acrescentada. Na prática, entre outros casos, isso pode ser útil se, mesmo usando URL amigável, você ainda quiser trabalhar com query string em determinadas ocasiões (ex, na URL do browser: /busca?q=valor - mod_rewrite para /busca e query string convencional para q=valor, sem interferência do .htaccess). Nunca precisei adicionar essa tag base href, mas pode ser que essa instrução te ajude: RewriteCond %{REQUEST_URI} /[^\.]+[^/]$ RewriteRule (.*) $1/ [L] Adicionar logo depois de RewriteEngine On, ela insere uma / (barra) no final da URL. A flag L significa [L]ast rule e funciona como o break do PHP. Mais sobre mod_rewrite: http://httpd.apache.org/docs/current/mod/mod_rewrite.html Compartilhar este post Link para o post Compartilhar em outros sites
Leandromx 0 Denunciar post Postado Novembro 29, 2010 Também não rolou. Seguinte, meu htacess funciona mas sou obrigado a colocar base href como disse no inicio. Eu quero tirar o base href. Fiz tudo que me pediram acima funciona mas as imagens e css não mostra no site somente a home que mostra certo. Seguinte o htaccess que postei no inicio. Exemplo do meu link www.site.com.br/sistema/produto/produto-de-teste.html www.site.com.br - meu dominio /sistema/ - pasta aonde esta o main.php ou seja o sistema todo produto - página produto.php produto-de-teste.html - produto que puxo do bd [code] Quando tiro a tag <base href='www.site.com.br/sistema/'> As imagens não aparece e olhando no codigo fonte ele entende que /produto/ é uma pasta. Então ele busca a imagem [code] www.site.com.br/sistema/produto/images/foto.jpg e na realidada foto esta em www.site.com.br/sistema/images/foto.jpg Aonde estou errando nisso? Compartilhar este post Link para o post Compartilhar em outros sites
Haz 3 Denunciar post Postado Novembro 30, 2010 Pra você entender, comece uma nova aplicação do zero, com essa estrutura: /.htaccess /app/.htaccess /app/index.php /app/images/qualquer_imagem.jpg Em /.htaccess, coloque: <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_URI} /[^\.]+[^/]$ RewriteRule (.*) $1/ [L] RewriteRule (.*) app/$1 [L] </IfModule> Em /app/.htaccess, coloque: <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule (.*) index.php?page=$1 [QSA,L] </IfModule> Em /app/index.php, coloque: <?php if (isset($_GET['page'])) { echo '$_GET = ' . $_GET['page']; } else { echo '$_GET não definido. Página principal.'; } ?> <img src="/images/qualquer_imagem.jpg" alt="" /> Lembrando que, pra esse teste funcionar, '/' tem que ser o diretório public_html, htdocs ou www, ou seja, os arquivos tem que estar de forma que possam ser acessados por www.site.com.br e não www.site.com.br/pasta. Há, obviamente, como fazê-lo dentro de outra pasta, mas pra simplificar faça dessa forma. Entendendo isso, é só adaptar ao seu sistema. Se, mesmo funcionando o teste, não funcionar no seu sistema, pense na possibilidade de alterar o sistema. Compartilhar este post Link para o post Compartilhar em outros sites
criatividade zero 17 Denunciar post Postado Novembro 30, 2010 use uma variavel com o endereço, é so isso define('base' , 'site.com.br/') link -> base . 'pagina.php' Compartilhar este post Link para o post Compartilhar em outros sites