Boa tarde a todos!
Dessa vez irei falar sobre remover o arquivo index.php de nossa aplicação no CodeIgniter, e também fixar o nosso domínio para um só! Ou seja uma tática SEO para não ficar com múltiplas URLS.
Primeiro vamos falar para o nosso CodeIgniter que a página index.php não deve mais existir! para isso devemos editar o arquivo config.php dentro da nossa pasta application.
Muito fácil, basta remover o conteudo da varíavel $config[‘index_page’] ficando igual o código abaixo.
/* |-------------------------------------------------------------------------- | Index File |-------------------------------------------------------------------------- | | Typically this will be your index.php file, unless you've renamed it to | something else. If you are using mod_rewrite to remove the page set this | variable so that it is blank. | */ $config['index_page'] = "";
Agora vamos criar o nosso arquivo .htaccess
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / #Remove o acesso a pasta system RewriteCond %{REQUEST_URI} ^system.* #Redireciona /index.php/nomedocontroller/ to /nomedocontroller/função/ RewriteRule ^(.*)$ index.php/$1 [L] #se o arquivo não existir (um css ou javascript por exemplo) #ele redireciona para o index.php RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L] #aqui fazemos o redirecionamento 301 de uma url.com.br para www.url.com.br RewriteCond %{HTTP_HOST} ^(seusite\.com\.br)(:80)? [NC] RewriteRule ^(.*) http://www.seusite.com.br/$1 [R=301,L] </IfModule> <IfModule !mod_rewrite.c> #caso o mod_rewrite não esteja habilitado ele redireciona todo erro 404 #para o index.php ainda funcionando ErrorDocument 404 /index.php </IfModule>
Pronto!
Agora você terá sua URL mais amigável e alem de tudo otimizada para os buscadores!
Para veríficar um exemplo:
acesse meu site assim: http://williamrufino.com.br e você será redirecionado para http://williamrufino.com.br
Fonte: http://codeigniter.com/
www.mestreseo.com.br
Aee.. Até que enfim algum site explicou e deu os passos certos para retirar o index.php do CodeIgniter!
Muito Obrigado!!
Que isso cara, bom saber que o post te ajudou!
Se tiver mais dúvidas sobre o Codeigniter ficarei feliz em ajudar, se tiver ao meu alcance!
Realmente o unico Site que funciona.
Ola amigo gostei do post você está de parabéns, estou começando a estudar o codeigniter e gostaria de uma dica sua, onde posso em contar um bom material em português para estudar, se poder mim ajudar agradeço.
http://www.ademargomes.com/
Está meio desatualizado mas me ajudou demais.
Apesar de o post ser antigo, ainda é a mesma forma de fazer.
Um abraço.
Olá, estou começando a utilizar o CI agora e estou com um problema. Configurei o .htaccess do jeito que voce ensinou, mas nao está funcionando. Ex: http://www.meusite.com.br/teste não funciona, mas quando eu coloco http://www.meusite.com.br/index.php/teste aí funciona. Ou seja, o .htacces não está funcionando, tanto que eu o retiro e mesmo assim o site nao funciona como default: http://www.meusite.com.br/index.php/qualquerpagina.
Utilizo o UOLHOST. Liguei lá e o pessoal disse que o modulo rewrite deles estão funcionando corretamente. Gostaria de saber como resolver isto. Muito obrigado e ótimo post
tambem estou com o mesmo problema.
Cara tenho a mesma situação, também tenho a publicação no uol e não rola tirar o index.php
Ola william no meu site não consegui deixar a url amigável, fiz tudo que era pra fazer, coloquei htaccess na pasta application, retirei ‘index.php’ do config.php, no servidor que está instalado o site ele fala que para colocar url amigável tem que colocar Rewrite base / eu fiz isso tambem mas nao deu, um exemplo acima é o site no formulario de contato da os erros em outra pagina em branco, por causa do index.php que atrapalha o caminho.
no uol você precisa mudar a pasta vars.php
coloque esse codigo abaixo que vai dar certo.
= 7;
/**
* Test if the current browser runs on a mobile device (smart phone, tablet, etc.)
*
* @return bool true|false
*/
function wp_is_mobile() {
static $is_mobile;
if ( isset($is_mobile) )
return $is_mobile;
if ( empty($_SERVER[‘HTTP_USER_AGENT’]) ) {
$is_mobile = false;
} elseif ( strpos($_SERVER[‘HTTP_USER_AGENT’], ‘Mobile’) !== false // many mobile devices (all iPhone, iPad, etc.)
|| strpos($_SERVER[‘HTTP_USER_AGENT’], ‘Android’) !== false
|| strpos($_SERVER[‘HTTP_USER_AGENT’], ‘Silk/’) !== false
|| strpos($_SERVER[‘HTTP_USER_AGENT’], ‘Kindle’) !== false
|| strpos($_SERVER[‘HTTP_USER_AGENT’], ‘BlackBerry’) !== false
|| strpos($_SERVER[‘HTTP_USER_AGENT’], ‘Opera Mini’) !== false
|| strpos($_SERVER[‘HTTP_USER_AGENT’], ‘Opera Mobi’) !== false ) {
$is_mobile = true;
} else {
$is_mobile = false;
}
return $is_mobile;
}
Boa tarde Rufino, será que com o .htaccess teria alguma chance de remover o /index.php/controller/function… e deixar apenas a variável. Tenho uma função que pega o último segmento da url para trazer dados…
Ex: meusistema/empresa/perfil/meunome
Teria como deixar assim com o .htacess:
Ex: meusistema/meunome??
Obrigado.