Estou tentando redirecionar (ou 'reescrever') mais de 3000 URLs para um site onde atualizamos o SEF da maioria das páginas de conteúdo para remover um número de ID que não era necessário / desejado. Este deve ser um processo simples usando regex; no entanto, estou aprendendo que regex e htaccess são mais 'art' do que ciência: - (
Aqui está a regra que tenho:
RewriteRule ^topics\/([-0-9a-zA-Z]+)?\/([0-9]+)(-)([0-9a-z,-]+)? http://example.net/topics/$1/$4 [L,R=301]
A maioria dos URLs é assim:
http://example.net/topics/management/6309-investing-proceeds-from-sale-of-a-farm-or-ranch
e trabalhe bem com o regex; No entanto, se um artigo começar com um número, terá um URL como este:
http://example.net/topics/management/3542-9-new-years-resolutions-for-cattle-producers
Então o regex (acima) está pegando mais do que apenas o primeiro conjunto de 4 dígitos de ID e também está pegando o primeiro número (neste caso, "9") que deve ser deixado, resultando nisso:
http://example.net/topics/management/new-years-resolutions-for-cattle-producers
O que obviamente não funciona.
Além disso, como uma solução alternativa, tentei criar algumas regras personalizadas para lidar apenas com as poucas páginas / URLs que têm esse formato (com um número no início do título do artigo), com uma regra à frente do regra de regex como esta:
Redirect 301 /topics/management/3542-9-new-years-resolutions-for-cattle-producers http://example.net/topics/management/9-new-years-resolutions-for-cattle-producers
ou
RewriteRule ^topics\/([-0-9a-zA-Z]+)?\/([0-9]{1,4}?)(-)([0-9,a-z,-]+)? http://example.net/topics/$1/$4 [L,R=301]
No entanto, quando faço isso, a regra regex (mais abaixo no arquivo htaccess) ainda é executada, resultando na remoção do "9".
Eu testei isso em muitos sites diferentes de testes de regex e htaccess e todos eles funcionam; no entanto, continua a falhar no servidor ao vivo.
O servidor da web é:
Apache / 2.2.25 (Unix) mod_hive / 4.0 mod_ssl / 2.2.25 OpenSSL / 1.0.0-mods mod_bwlimited / 1.4 mod_fcgid / 2.3.6
E eu já entrei em contato com meu servidor / empresa de hospedagem e eles dizem que não têm o conhecimento necessário para resolver esse problema.
Alguém pode ver onde o problema está aqui? Eu pesquisei centenas de postagens no fórum aqui e em outros lugares, sem que ninguém tenha o mesmo problema.