Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá galera do imasters, gostaria de saber como eu posso fazer com que as minhas urls fiquem assim "meusite.com.br/contato", ouvi falar que eu teria que fazer o tal das urls amigaveis, procurei a respeito achei um que falava que você teria que add umas linha de codigos no ".htaccess" do meu site:
RewriteEngine On
RewriteRule ^noticias\/?([0-9]+)\/([0-9]+)\/([0-9]+)\/?$ /noticias/$1-$2-$3
so que quando eu coloco essas linha ele me gera esse erro:
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, webmaster@localhost and inform them of the time the error occurred, and anything you might have done that may have caused the error.
More information about this error may be available in the server error log.
Eu não sei se e pq ele ta em localhost, se alguem poder me explicar pq esta acontecendo isso, poste ai ficarei grato.... vlw
ok, diga tb o q você ker fazer exatamente, podemos dar uma alternativa...
>
Você já habilitou o mod_rewrite?
Sim eu ativei... agora eu não sei se esta correto..
mod_rewrite on
RewriteEngine On
RewriteRule ^(.+)\/?([0-9]*)\/?$ /index.php?s=$1&p=$2
>
ok, diga tb o q você ker fazer exatamente, podemos dar uma alternativa...
Eu quero que na minha url não tenha o ".php" eu quero que fique assim "meusite.com/contato" "ow "meusite.com/home" ao em vez de "Meusite.com/contato.php"...
sim, agora esta correto, continua com o mesmo problema?
>
sim, agora esta correto, continua com o mesmo problema?
sim ainda continua com o msm problema:
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, webmaster@localhost and inform them of the time the error occurred, and anything you might have done that may have caused the error.
More information about this error may be available in the server error log.
Será que não e por causa do localhost, ow do php.ini?
mod_rewrite on
RewriteEngine On
RewriteRule ^(.+)\/?([0-9]*)\/?$ /index.php?s=$1&p=$2
ok, nao eh no htaccess q você ativa o mod rewrite, você tem q ir no httpd.conf do aache e descomentar a linha dele, retirar o # do inici da linha...e reinicia o apache...
>
mod_rewrite on
RewriteEngine On
RewriteRule ^(.+)\/?([0-9]*)\/?$ /index.php?s=$1&p=$2
ok, nao eh no htaccess q você ativa o mod rewrite, você tem q ir no httpd.conf do aache e descomentar a linha dele, retirar o # do inici da linha...e reinicia o apache...
fiz exatamente o que você recomendou, retirei o # da primeira linha do httpd.conf do apache, e reiniciei, mais não deu certo continua com o msm problema, ai eu tentei de duas maneiras:
1º retirei o # da primeira linha do httpd.conf do apache, e também retirei o "mod_rewrite on" do meu .htacces .
2º retirei o # da primeira linha do httpd.conf do apache, e nao retirei o "mod_rewrite on".
porem continua a msm coisa....
>
fiz exatamente o que você recomendou, retirei o # da primeira linha do httpd.conf do apache, e reiniciei, mais não deu certo continua com o msm problema, ai eu tentei de duas maneiras:
1º retirei o # da primeira linha do httpd.conf do apache, e também retirei o "mod_rewrite on" do meu .htacces .
2º retirei o # da primeira linha do httpd.conf do apache, e nao retirei o "mod_rewrite on".
porem continua a msm coisa....
eu nao disse pra tirar da PRIMEIRA LINHA, eu disse pra tirar do modulo rewrite, por favor leia direito, ok? assim fara as coisas certas
eu disse pra tirar do modulo rewrite, logo mod rewrite
deve estar assim
#loadModule mod/mod_rewrite.so
ae você retira o # DESTA LINHA EM ESPECIFICO
e retira do htaccess o mo_rewrite on, pq nao faz parte estar ali, leia a documentacao do apache...isto tb eh necessario...
tbm não consigo fazer funcionar url amigáveis no localhost.
meu htacces
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.+)\/?([0-9]*)\/?$ /index.php?s=$1&p=$2
trecho do httpd.conf
#LoadModule reqtimeout_module modules/mod_reqtimeout.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule setenvif_module modules/mod_setenvif.so
#LoadModule speling_module modules/mod_speling.so
da erro 404
aki
RewriteRule ^(.+)\/?([0-9]*)\/?$ /index.php?s=$1&p=$2
tira a barra da frente do index....ficando
RewriteRule ^(.+)\/?([0-9]*)\/?$ index.php?s=$1&p=$2
Galera, vamos ajudar a resolver esse problema ^^
Acredito que assim como eu, outras pessoas tem a mesma dificuldade em ativar as URL amigáveis no localhost.
Logicamente testei as opções anteriores, porém sem sucesso. Estou mantendo a proposta inicial, retirar a extensão .php do arquivo no localhost. Pra mim o erro mostrado é o 404(página não encontrada), o que indica que a reecrita não está funcionando.
A linha que carrega o módulo de reescrita no php.ini está habilitado.
O arquivo .HTACCES está na raiz com o seguinte código:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.+)\/?([0-9]*)\/?$ index.php?s=$1&p=$2
Conto com a ajuda de vocês.
pessoal, help here!!
ninguém ai que consegue fazer o arquivo .htaccess rodar corretamente no localhost?!
o seu problema, q difere do topico, eh o seguinte, você negou acesso a todo arquivo .php e depois redirecionou as chamadas pra index.php, se você negou acesso a todos os .php, como vai redirecionar para o index.php?
Tudo bem Igor.php, onde eu estou negando acesso aos arquivos php?!
Desculpa, correção, já retirei o .php do código, mesmo assim o erro continua...
aki
RewriteCond %{REQUEST_FILENAME}\.php -f
>
aki
RewriteCond %{REQUEST_FILENAME}\.php -f
então, como falei tirei o .php dai
ficou assim:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)\/?([0-9]*)\/?$ principal.php?s=$1&p=$2
Como é a URL original?
Se for exibir algum arquivo na index fassa o seguinte:
Onde quer exibir as paginas que serão "incluidas no layout"
Coloque isto:
<?php include("./".$_GET["act"].".php");?>
Irá pegar o nome do arquivo.php do Get.
Então uma URL que seria: seusite.com.br/index.php?act=arquivo
se tornará: seusite.com.br/arquivo
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^((?:[a-z][a-z0-9]*))$ index.php?act=$1
Código do .htacess
eu só quero tirar a extensão .php. Nesse caso não passo nenhum parâmenteo pela url. A URL original é assim:
www.meusite.com.br/index.php. Como deveria ficar www.meusite.com.br/indexeu
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([a-z]+)$ $1.php [L]
apenas isso e já resolve a questão.
leitura:
http://wbruno.com.br/blog/2011/10/06/mostrar-html-na-url-mas-servir-paginas-php/
não resolveu :(
coloquei o arquivo na raiz e dentro da própria pasta, chequei o httpd.conf e a linha //LoadModule rewrite_module modules/mod_rewrite.so está descomentada. Reiniciei o apache, tentei acessar pelo localhost/teste e localhost/pasta/teste, o erro 404 persiste.
Esqueci alguma coisa?
o seu arquivo se chama apenas .htaccess ?
sem nome, e apenas extensão ?
você tem um arquivo chamado teste.php na raiz do htdocs ?
Confere. Estão corretos...
o arquivo teste.php e o htaccess está em C:\Servidor\Apache\htdocs
Donkeykong ele quer saber se arquivo é htaccess ou .htaccess! Tem que ter um ponto antes do htaccess!
sim, tem o ponto.
Amigos, desculpem, mas acho que posso contribuir, uma vez que ando criando todos os meus sistemas com estas ferramentas.
Nas minhas aplicações nunca precisei passar um parametro atraves destas url amigaveis, entretando, quando a chamada e direta e sem parametro ocorre tudo normalmente, tanto em localhost qto no servidor(http://www.fjmcdevelopment.com.br).
Meu htaccess esta configurado desta forma:
######### Definindo a linguagem padrao
DefaultLanguage pt-BR
######### Previnindo acesso
<Files ~ "\.(htaccess|htpasswd|ini|phps|fla|psd|log|sh)$">
deny from all
</Files>
######### Permite o acesso de todos os domínios para as web fontes.
<FilesMatch "\.(ttf|otf|eot|woff|font.css)$">
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "*"
</IfModule>
</FilesMatch>
######### Barrando a navegação por pastas.
Options -Indexes
######### Redirecionamento para as páginas de erro 403 e 404
ErrorDocument 403 http://localhost/fotografias/403
ErrorDocument 404 http://localhost/fotografias/404
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?page=$1
Feito isto, criei um arquivo que verifica a pagina selecionada. Como? Criei um arquivo controlador de chamadas, desta forma:
$urlBase = 'http://localhost/fotografias';//
$urlFinal = explode('/', isset($_GET['page']) ? $_GET['page'] : 'home');
if($urlFinal[0]=="home"){
require_once 'app/view/home.php';require_once 'app/view/fotos.php';
}
Mais nada. Desta forma porém, todos os links devem ter uma ação amigável.
Assim:
<ul id="menu-topo">
<li><a href="home" >Home</a></li>
</ul>
Entretanto, agora esbarrei com a passagem de um parametro atraves das url amigaveis, pos necessito recuperar o nome da imagem que o cliente selecionou.
Espero ter ajudado.
Fala galera, tudo bom? Voltei a ressuscitar esse tópico, porque já tentei todas as formas anteriores e inclusive outros tutoriais, e o que se parece algo simples está a me dar um baita dor de kbça...
Simplesmente nada funciona, nenhuma das tentativas teve êxito. Algum de vocês saberia o motivo?
Pra deixar bem claro como estou fazendo, estou postando o último código, apesar de ser o mesmo que passaram antes, segue
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?page=$1
Outro Forma
<IfModule mod_rewrite.c>
RewriteEngine On
#Página de contato
RewriteRule ^index/?$ /index.php [NC,L]
</IfModule>
quero por enquanto, apenas remover a extensão .php da url e deixá-la assim: www.meusite.com.br/index
Você já habilitou o mod_rewrite?