Ir para conteúdo

Arquivado

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

mexicanox

[Resolvido] Rewrite Rule no Code Igniter

Recommended Posts

Seguinte, o que eu preciso é algo que eu acredito ser relativamente simples, mas eu nao to conseguindo fazer.

 

Estou fazendo um site com Code Igniter e o que eu quero é fazer com que quando o endereço /uploads/videos/* for acessado, seja feito um redirecionamento com o mod_rewrite para uma pagina digamos /site/check/, que basicamente fai fazer algumas verificações, tipo se o usuario esta logado etc, e depois liberar o video.

 

 

 

 

O que eu tenho ate agora é isso:

 

RewriteEngine on
RewriteCond $1 !^(images|css|js|uploads|index\.php|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [QSA]

#ate aqui é o uqe esta no manual do proprio CI e sempre funciou normal e ainda funciona
RewriteRule uploads\/videos.* site/check/

#a regra acima é que nao esta dando certo, simplesmente da um erro 404 Page Not Found do CI

 

ja estou tentando isso a alguns dias e nada da certo, ja estou meio desesperado.

 

 

 

 

flws

Compartilhar este post


Link para o post
Compartilhar em outros sites

note as rules do CI. Tente dessa forma aqui:

 

 

RewriteEngine on
#ate aqui é o uqe esta no manual do proprio CI e sempre funciou normal e ainda funciona
RewriteRule ^uploads\/videos/?(.*)$ /site/check/

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


#a regra acima é que nao esta dando certo, simplesmente da um erro 404 Page Not Found do CI

Veja que mudei a ordem, e dei uma corrigida básica na tua rule

Compartilhar este post


Link para o post
Compartilhar em outros sites

mesmo assim vai para aquela pagina de erro 404 do CI, é isso que ta me complicando, parece que ele nao encontra a pagina, mas ela existe com certeza.

 

 

 

 

flws

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

tem mais alguma coisa no teu htaccess ?

 

Adicione o LAST:

RewriteRule ^uploads\/videos/?(.*)$ /site/check/ [L]

você deixou na ordem que eu coloquei ne?!

Compartilhar este post


Link para o post
Compartilhar em outros sites

O meu htaccess é so isso que postei, mesmo colocando o [L] ainda vai para o 404 do CI, atualmente esta assim:

 

RewriteEngine on
RewriteRule ^uploads\/videos/?(.*)$ site/check/ [L]

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

 

Uma coisa que acho que nao expliquei direito no inicio é que o o diretorio "uploads/videos" nao é um controller e sim para onde vai os uploads do site.

 

Eu acho que não esta dando muito certo por que o CI esta tratando o "uploads/videos" como um controller uploads e tanta chamar o metodo videos, como é um controller inexistente cai direto no 404. Esta é uma teoria minha nao sei se esta correto mais....

 

 

 

 

flws

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui resolver de uma maneira meio estranha, basicamente eu coloquei a mesma regra do htaccess no routes do CI no caso ficou assim.

 

.htaccess

 

RewriteEngine on
RewriteRule ^uploads\/videos/(.*) site/check/ [L]

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

 

 

 

 

config/routes.php

 

$route['uploads/videos/(.*)'] = 'site/check/';

 

 

 

 

E funcionou corretamente, mas cai em um outr problema que nao tinha pensado.

 

Este rewrite eu queria fazer pensado em restringir o acesso direto ao arquivo de video, assim impedido o download pela URL completa, ex: http://meusite/uploads/videos/meu_video.flv

 

O que eu quis era que ao acessar a url diretamente fosse feita a verificação no controller "check" e caso o usuario esteja na pagina certa, que seria "curso/assistir/meu_video" o acesso fosse liberado para a visualização do video, mas negado caso fosse acessado direto.

 

Para exibir os videos eu estou usando o flowplayer.

 

 

 

 

flws

 

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

O Estranho é que se eu fizer só nos routes ou só no htaccess não funciona, estranhamente tem que ser nos dois para dar certo.

 

 

 

 

flws

 

 

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.