Ir para conteúdo

POWERED BY:

Arquivado

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

Caio Erick

Reescrita de URL no Codeiginiter

Recommended Posts

Seguinte, eu tô com um pequeno problema na reescrita da URL de uma pequena aplicação no Codeigniter que eu estou estudando.

 

Estava fazendo em localhost, usando o seguinte arquivo .htaccess para remover o index.php da aplicação, ficando necessário, apenas, o acesso no seguinte modelo: localhost/xerox/controller/metodo sem a necessidade de pôr o index.php antes do /controller/ como é padrão do codeigniter.

 

Contudo, ao subir o código pra web, a aplicação não reconhecia o acesso apenas por controller/metodo e só acessava as views se eu colocasse o index.php/controller/metodo. No começo pensei que fosse porque o servidor de hospedagem não permitia a reescrita de URL's, mas eu tenho outro site na mesma hospedagem que utiliza URL amigável sem problemas.

 

A aplicação tem 2 controllers e apenas 2 views, bem simples, assim:

1. aplication/controller/home.php

2. aplication/controller/welcome.php

 

As 2 views são:

1. aplication/views/home_view.php

2. aplication/views/welcome_view.php

 

Cada view, respectiva à um controller.

Alguém poderia me ajudar nesse pequeno problema?

 

Aplicação está aqui http://www.caioerick.com/xerox

Arquivo .htaccess http://pastebin.com/D7svdAxe

 

 

Muito obrigado!

 

Como eu havia testado localhost, era para funcionar assim www.caioerick.com/home. Contudo, só funciona assim www.caioerick.com/index.php/home

 

Obrigado!

 

Ops, corrigindo a URL acima:

 

Era para funcionar assim www.caioerick.com/xerox/home.

Contudo, só funciona assim www.caioerick.com/xerox/index.php/home

Compartilhar este post


Link para o post
Compartilhar em outros sites

o index.php você em.

 

application\config

$config['index_page'] = 'index.php';

 

tire deixando...

$config['index_page'] = '';

Compartilhar este post


Link para o post
Compartilhar em outros sites

o index.php você em.

 

application\config

$config['index_page'] = 'index.php';

 

tire deixando...

$config['index_page'] = '';

 

 

Já tinha feito isso também, mas continua do mesmo jeito :(

Compartilhar este post


Link para o post
Compartilhar em outros sites


RewriteEngine on
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]


deixe assim seu .htaccess da raiz do seu projeto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

como está sua configuração

 

$config['base_url'];

$config['index_page'];

Compartilhar este post


Link para o post
Compartilhar em outros sites

tira o xerox e deixa apenas /

 

$config['base_url'] = "http://www.caioerick.com/";

Compartilhar este post


Link para o post
Compartilhar em outros sites

tira o xerox e deixa apenas /

 

$config['base_url'] = "http://www.caioerick.com/";

 

Your config file does not appear to be formatted correctly.

Eu realmente não sei mais o que fazer =(

Vou disponibilizar o zip aqui pra quem quiser ver:

 

Aplicação: www.caioerick.com/xerox

Download: www.caioerick.com/inferno.zip

Compartilhar este post


Link para o post
Compartilhar em outros sites

modifique o index.php de

define('ENVIRONMENT', 'development');

 

para

 

define('ENVIRONMENT', 'production');

 

em config.php

 

Faça

 

application/config/

$config['base_url'] = 'http://www.caioerick.com/xerox/';

$config['index_page'] = '';

$config['log_path'] = 'application/logs/';

 

no htaccess

 

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTP_HOST} ^(caioerick\.com/xerox)(:80)? [NC]
RewriteRule .* http://www.caioerick.com/xerox/index.php/$0 [R=301,L]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou tentar essas modificações, 1 minutinho

 

 

modifique o index.php de

define('ENVIRONMENT', 'development');

 

para

 

define('ENVIRONMENT', 'production');

 

em config.php

 

Faça

 

application/config/

$config['base_url'] = 'http://www.caioerick.com/xerox/';

$config['index_page'] = '';

$config['log_path'] = 'application/logs/';

 

no htaccess

 

 

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{HTTP_HOST} ^(caioerick\.com/xerox)(:80)? [NC]

RewriteRule .* http://www.caioerick.com/xerox/index.php/$0 [R=301,L]

continua não dando certo :(

 

E pior, passei o codigo pra um amigo meu, esse mesmo codigo que publiquei o link ai em cima, e no localhost dele não funcionou. E eu não fiz lá muita coisa, pode até fazer o download ai e ver, só o basico do basico do basico.

Compartilhar este post


Link para o post
Compartilhar em outros sites

No config.php tem a seguinte explicação:

 

 

 

/*
|--------------------------------------------------------------------------
| Base Site URL
|--------------------------------------------------------------------------
|
| URL to your CodeIgniter root. Typically this will be your base URL,
| WITH a trailing slash:
|
| http://example.com/
|
| If this is not set then CodeIgniter will guess the protocol, domain and
| path to your installation.
|
*/
$config['base_url'] = '';

 

Ou seja, se deixar em branco, ele tenta "adivinhar" a URL para você. Sempre deixo em branco e nunca tive problemas.

 

A index_url também deixo em branco, porque a reescrita de URL vai jogar tudo o que digitarmos para o index.php.

 

O que vi de errado no seu htaccess, é que você não está capturando a expressão para utilizar na reescrita.

# ativa a reescrita de url
RewriteEngine on

# se não for um arquivo
RewriteCond %{REQUEST_FILENAME} !-f

# e não for um diretorio
RewriteCond %{REQUEST_FILENAME} !-d

# pegamos o que foi enviado e jogamos 
# como argumento para o index.php
# note que colocamos a expressão
# entre parenteses para capturar o
# que queremos jogar e referenciamos
# a captura a partir do indice $1,
# conforme o numero de grupos (parenteses)
RewriteRule ^(.*)$ index.php/$1 [L]

No htaccess, não precisa do rewrite base, porque a base de reescrita será onde você deixar o .htaccess.

 

@braços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Meu novo htaccess tá assim:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTP_HOST} ^(caioerick\.com/xerox)(:80)? [NC]
RewriteRule .* http://www.caioerick...erox/index.php/$0 [R=301,L]

 

Vou tentar colocar do jeito que você falou, obrigado pela ajuda :)


No config.php tem a seguinte explicação:

 

 

Ou seja, se deixar em branco, ele tenta "adivinhar" a URL para você. Sempre deixo em branco e nunca tive problemas.

 

 

Mas ele advinha mesmo sendo dentro de outro diretorio e nao sendo na raiz do site? porque eu to usando www.caioerick.com/xerox e nao no caioerick.com, se liga?


Pronto, salvei esse novo htaccess, mas continua do mesmo jeito.

 

Só funciona assim:

http://www.caioerick.com/xerox/index.php/home

 

Era pra funcionar assim:

http://www.caioerick.com/xerox/home

 

 

Como fiz algumas pequenas alterações, vou colocar toda a pasta pra download pra caso alguém queira ver.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, mesmo dentro de diretorios funciona.

Você está com o modulo de reescrita do Apache ativo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

tá ativado sim, até porque tô usando index.php/controller/model.

 

Segue para download: http://www.caioerick.com/xerox/xerox.zip


Esse dominio também na mesma hospedagem www.dce.ufc.br e ele usa reescrita


Sei não ó, to quase desistindo de fazer o que ia fazer no codeiginiter só por causa disso. e eu até já tinha estudado um pouco dele e já tenho uma base.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Caio! Tente criar um arquivo .htaccess na pasta raiz do seu site exemplo:

- application

- system

- user_guide

- index.php

- .htaccess (AQUI o ARQUIVO)

 

Com o seguinte conteúdo:

RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]

Espero ter Ajudado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Caio! Tente criar um arquivo .htaccess na pasta raiz do seu site exemplo:

- application

- system

- user_guide

- index.php

- .htaccess (AQUI o ARQUIVO)

 

Com o seguinte conteúdo:

RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]

Espero ter Ajudado!

Então, o meu htaccess já está na raiz rs. Já tentei esse htaccess, também não funcionou. Tenta dar uma olhada no link que eu postei pra download

 

Segue para download: http://www.caioerick.com/xerox/xerox.zip

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Caio! O link que postou para download, esta com problemas, não estas fazendo download e sim aparecendo a mensagem "Welcome".

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.