Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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
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
tem mais alguma coisa no teu htaccess ?
Adicione o LAST:
RewriteRule ^uploads\/videos/?(.*)$ /site/check/ [L]
você deixou na ordem que eu coloquei ne?!
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
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
Bem, eu acredito que você não necessariamente faça isso no htaccess mas sim nas rotas de codeigniter.
$route['/uploads/videos/'] = "site/check";
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
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