Redirecionamento de links antigos DSpace

Olá pessoal, bom dia.

Alguns meses atrás realizamos a migração de um de nossos repositórios institucionais do DSpace 5.2 para o DSpace 7.6.1.

Nesta nova versão, qualquer link que contenha o trecho “jspui” (que não é mais utilizado na versão 7) não é redirecionado corretamente, resultando em erro 404. Manter os links antigos seria muito importante pois muito indexadores ainda procurarem nossos itens por estes links.

Por exemplo:
https://livroaberto.ufpa.br/jspui/handle/prefix/376 (dará erro 404)

https://livroaberto.ufpa.br/handle/prefix/376 (irá abrir o item correspondente)

Até onde pesquisamos no momento, não encontramos nenhuma referência explicita na documentação oficial sobre como manter o redirecionamento de links antigos. Tentamos configurar uma forma de redirecionamento utilizando o Apache, mas sem sucesso até então. Tentamos no Apache a seguinte configuração:

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/jspui/(.)$
RewriteRule ^jspui/(.
)$ /$1 [L,R=301]

O objetivo com esta configuração é de que o link antigo recebido fosse ser editado ao passar pelo Apache, sendo o trecho “jspui” removido e encaminhado internamente o link modificado.

Alguém que já tenha passado por esta situação e tenha conseguido resolver, poderia informar que parâmetros ajustou para resolver esta situação? Posso repassar qualquer configuração atualmente aplicadas no repositório se necessário.

Desde já agradeço.

Att.

1 curtida

Boa noite,
O Dspace não monta link dinâmico, ele grava no banco no metadado uri. Agora pra vc tratar isso a nível de rede, creio que será uma tarefa complexa. Penso que vc tá no caminho, vai ter q quebrar a cabeça pra acertar a regra. Talvez algo como isso:

sudo a2enmod rewrite
sudo systemctl restart apache2

No arquivo .htaccess do seu projeto ou no arquivo de configuração do Apache (por exemplo, 000-default.conf), você pode adicionar regras para reescrever URLs:

RewriteEngine On

Exemplo: redireciona “/antiga-parte/algum-texto” para “/nova-parte/algum-texto”

RewriteRule ^antiga-parte/(.*)$ /nova-
parte/$1 [R=301,L]

Explicação:

  • RewriteEngine On ativa o mecanismo de reescrita.
  • RewriteRule ^antiga-parte/(.*)$ /nova-parte/$1 [R=301,L] é a regra para redirecionar.
    • ^antiga-parte/(.*)$: captura qualquer coisa após /antiga-parte/.
    • /nova-parte/$1: redireciona para /nova-parte/ seguido pelo que foi capturado em (.*).
    • [R=301,L]: R=301 faz um redirecionamento permanente; L indica que esta é a última regra

Att, Lucas

1 curtida