Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Henrique de Souza

Ocultar a extensão ".php" da URL/.htaccess

Recommended Posts

Olá pessoal!

 

Estive buscando no Google e aqui no fórum, mas sem sucesso, sobre esse assunto. Vi várias pessoas indicando o .htaccess mas não sei como usa-lo. Criei o arquivo (.htaccess), com os seguintes dados:

 

RewriteEngine on
RewriteRule ^([a-z,0-9,A-Z,_-]+)$ /$1.php

E só; não há mais nada no código. Salvei este na pasta www do localhost, e agora todas as páginas retornam 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, admin@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.

 

O que eu estaria fazendo de errado? É o local, ou o código que está errado?

 

Valeu a ajuda! :thumbsup:

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você já habilitou o mod_rewrite?

Vá em httpd.conf e descomente (remova #) [inline]LoadModule rewrite_module modules/mod_rewrite.so[/inline]

Reinicie o servidor.

Acrescente antes das regras no .htaccess

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d


Um exemplo de regra

RewriteRule ^([a-z]*)/([a-z0-9_]*)/?$ index.php?controller=$1&action=$2

 

Seria localhost/nome_controller/nome_action

Depois dê um [inline]var_dump( $_GET )[/inline]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você já habilitou o mod_rewrite?

 

Vá em httpd.conf e descomente (remova #) [inline]LoadModule rewrite_module modules/mod_rewrite.so[/inline]

 

Reinicie o servidor.

 

Acrescente antes das regras no .htaccess

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

 

Um exemplo de regra

RewriteRule ^([a-z]*)/([a-z0-9_]*)/?$ index.php?controller=$1&action=$2

 

Seria localhost/nome_controller/nome_action

Depois dê um [inline]var_dump( $_GET )[/inline]

 

Fiz o que você sugeriu, Carlos.

Agora, está retornando erro 404, quando acesso sem o .php.

 

Estou tentando acessar da URL:

 

http://localhost/txt/lt/visual/login/minha-conta

 

E o 404:

Not Found

"The requested URL /minha-conta.php was not found on this server."

 

Agora está tentando acessar o arquivo a partir da raiz.

 

Meu .htaccess:

 

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteEngine on
RewriteRule ^([a-z,0-9,A-Z,_-]+)$ /$1.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

O minha-conta.php está na mesma pasta dos outros scripts (http://localhost/txt/lt/visual/login/).

 

<?php
var_dump($_GET);
ob_start();
header('Content-type: text/html; charset=ISO-8859-1');
if ($_COOKIE["VHVhdGhhIGRlIERhbm5hbg"]==null){
	header("Location: ./login.php");
}
?>
<!DOCTYPE html>
	<html xmlns="http://www.w3.org/xhtml/1999">
		<head>
			<title>Site</title>
			<link rel="stylesheet" type="text/css" href="style/style.css" />
			<meta name="robots" content="noindex,nofollow" />
			<meta http-equiv="refresh" content="3600;" />
		</head>
		<body>
		<div class="all">
		
		</div>
			<script type="text/javascript" src="script.js"></script>
		</body>
	</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Acrescente ponto (.) antes da barra (/)

RewriteRule ^([a-z,0-9,A-Z,_-]+)$ ./$1.php

 

Agora ficou:

 

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteEngine on
RewriteRule ^([a-z,0-9,A-Z,_-]+)$ ./$1.php

e o 404 continua:

 

The requested URL /minha-conta.php was not found on this server.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O arquivo .htaccess está no local correto? Poste como está a estrutura dos diretórios e arquivos.

 

Aqui funciona normalmente

 

Estrutura dos arquivos

teste/
    .htaccess
    index.php
    file_test.php

 

.htaccess

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-z,0-9,A-Z,_-]+)$ ./$1.php

index.php

<?php

echo 'index.php';

test_file.php

<?php

echo 'test_file.php';

URL

localhost/teste

Saída

index.php

URL

localhost/teste/test_file

Saída

test_file.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, estou com o mesmo problema, será que você pode ajudar ?

 

usei um instalador automático e fica colocando index.php na minha url

 

Ex: www.dominio.com.br/index.php/contato

 

como faço para remover isso? já tentei em link permanente no painel do wordpress e não resolveu, será que você sabe o que fazer?

Compartilhar este post


Link para o post
Compartilhar em outros sites

// Evitar que os diretórios sejam listados
DocumentRoot /var/www
<Directory>
     Options FollowSymLinks
     AllowOverride All
</Directory>
<Directory /var/www>
     Options -Indexes 
     Options -FollowSymLinks 
     Options -MultiViews
     AllowOverride None
     Order allow,deny
     allow from all
DirectoryIndex index.htm index.html index.php default.php home.php
</Directory>

 

// para não aparecer a extensão dos arquivos

<IfModule mod_rewrite.so>
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME}!-f
    RewriteCond %{REQUEST_FILENAME}!-d
    RewriteCond %{REQUEST_FILENAME}\.html -f
    RewriteCond %{REQUEST_FILENAME}\.php -f
    RewriteBase /
    RewriteRule ([^/]*)/?$ /$1.php [QSA,L] 
    // RewriteRule ^([0-9,A-Z,a-z,_-]+)/?$ /$1.html /$1.php [QSA,L]
    // RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [QSA,L]
    controller=$1&action=$2
    RewriteRule ^control/([^/]+)/(.*)$ index.php?
    control=$1&query=$2
</IfModule>    
 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.