← Desenvolvimento

HTAccess - redireccionamento automático para urls diferentes

Lida 2068 vezes

Offline

muiomuio 
Membro
Mensagens 324 Gostos 0
Feedback +1

Troféus totais: 23
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 4 Level 3 Level 2 Level 1 100 Posts 50 Posts

O problema:

Tenho 186 urls que preciso de redireccionar sendo que a nova url incluí um número criado aleatoriamente pelo novo gestor de conteúdos do site.

Por exemplo:
No site antigo tinha um ficheiro pdf chamado 10_1_2.pdf, o mesmo ficheiro agora chama-se 10_1_2_127462.pdf sendo que o 127462 é um número gerado aleatoriamente quando o ficheiro foi enviado para o site através do novo gestor de conteúdos.

Existe maneira de redireccionar as urls automaticamente?
O único metodo que conheço é que funciona é o de ter os 2 urls e redireccionar manualmente o velho url para o novo url mas procurar os urls e criar o redireccionamento mais colocar o ficheiro .htaccess online (tem de passar por 3 pessoas para além de mim) leva demasiado tempo.
Offline

Nazgulled 
Membro
Mensagens 552 Gostos 0
Troféus totais: 29
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Poll Starter Level 5 Level 4 Level 3 Level 2

Tendo em conta que o numero concatenado ao fim do nome do ficheiro é completamente aleatório, não tens outra hipótese se não fazer o redireccionamento manual.

Isso é a mesma coisa que tu mudares o nome de algum ficheiro no teu servidor e esperares que um link antigo continue a funcionar...
Offline

Emanuel Santos 
Elite
Mensagens 848 Gostos 2
Feedback +25

Troféus totais: 25
Trófeus: (Ver todos)
Windows User Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 4 Level 3 Level 2 Level 1

Desde que seja sempre um número aleatório podes remover do último underscore até ao .pdf
Offline

Nazgulled 
Membro
Mensagens 552 Gostos 0
Troféus totais: 29
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Poll Starter Level 5 Level 4 Level 3 Level 2

Desde que seja sempre um número aleatório podes remover do último underscore até ao .pdf
Mas isso seria tomar alguma atitude manualmente e não ter um redireccionamento automático.
Offline

Emanuel Santos 
Elite
Mensagens 848 Gostos 2
Feedback +25

Troféus totais: 25
Trófeus: (Ver todos)
Windows User Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 4 Level 3 Level 2 Level 1

Não, o que identifiquei foi um padrão, logo há uma expressão regular.

RewriteRule ^(.*)_([0-9]+)\.([a-zA-Z0-9]+)$ /$1.$3

Penso que vai funcionar ;)
Offline

Emanuel Santos 
Elite
Mensagens 848 Gostos 2
Feedback +25

Troféus totais: 25
Trófeus: (Ver todos)
Windows User Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 4 Level 3 Level 2 Level 1

lol percebi o problema ao contrário, assim não dá obviamente
Offline

anjo2 
Membro
Mensagens 3020 Gostos 0
Troféus totais: 31
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Poll Starter Level 5 Level 4 Level 3 Level 2

Claro que dá, existe um padrão, é apenas preciso uma linguagem de programação que faça a procura, tens por exemplo o php.

Imagina que envias o id 10_1_2 para o php
<?php
if(!isset($_GET['id'])) exit;
$id $_GET['id'];
$dir "/home/username/public_html/pdfs"// MUDAR!!!
$handle  opendir($dir);
while (
$filename readdir($handle)) $files[] = $filename;
$res preg_grep("/^$id(.*)$/"$files);
$loc array_pop($res);
Header"Location: http://www.teusite.com/pdfs/$loc); // MUDAR!!!
?>


E depois precisas de uma regra no .htaccess:
RewriteRule ^(.*)_([0-9]+)\.pdf$ /search.php?id=$1
Offline

Emanuel Santos 
Elite
Mensagens 848 Gostos 2
Feedback +25

Troféus totais: 25
Trófeus: (Ver todos)
Windows User Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 4 Level 3 Level 2 Level 1

Está bem pensado  :superlol:, penso que ele queira usar outros ficheiros para além de pdfs