Mod-rewrite complicada

3

Eu tenho um requisito de um cliente para executar alguns redirecionamentos específicos (parte da desativação de um servidor antigo para um novo). Eu tenho batido minha cabeça contra isso e está me deixando louca!

Na verdade, eu preciso fazer dois .htaccess mod-rewrites ao mesmo tempo. Eu estou esperando que isso seja algo realmente simples, mas eu tentei tudo o que posso pensar, então é hora de pedir conselhos.

Eu preciso fazer o seguinte:

Para complicar ainda mais, isso é repetido, pois os recursos da Web podem estar em diferentes locais de nova pasta (newfolder1, newfolder2, newfolder3).

No momento, meu segmento .htaccess é assim:

    <IfModule mod_rewrite.c>
       RewriteEngine on

       RewriteCond         "%{DOCUMENT_ROOT}/oldfolder/%{REQUEST_URI}"  -f
       RewriteRule "^(.+)" "%{DOCUMENT_ROOT}/newfolder1/$1"            [L]
       RewriteCond         "%{DOCUMENT_ROOT}/oldfolder/%{REQUEST_URI}"  -f
       RewriteRule "^(.+)" "%{DOCUMENT_ROOT}/newfolder2/$1"            [L]
       RewriteCond         "%{DOCUMENT_ROOT}/oldfolder/%{REQUEST_URI}"  -f
       RewriteRule "^(.+)" "%{DOCUMENT_ROOT}/newfolder3/$1"            [L]
       RewriteRule   "^"  "-"  [PT]

Isso funciona bem para redirecionar a pasta mas ela só funciona se algum-recurso da web ainda não contiver o .html .

Eu tentei:

RewriteRule "%{REQUEST_URI}[^.html]" "%{DOCUMENT_ROOT}/newfolder1/$1"  [L]
RewriteRule "^(.*).html$" "%{DOCUMENT_ROOT}/newfolder1/$1"  [L]

e muitas variações sobre isso, mas eu não estou chegando a lugar nenhum.

    
por Pete Mallam 20.12.2017 / 19:24

1 resposta

3

Ok, então o Wordpress (o novo sistema) vai fazer muito do trabalho pesado comigo e eu estava latindo na árvore errada.

O ANTIGO URL ( link ) tem a extensão html e por Como um erro eu percebi que esta é a única coisa que eu preciso mudar - Wordpress irá substituir o "nome da pasta" para mim como parte do "sim, você tem uma má URL lá matey" verificar.

Então, minha correção foi tão simples quanto jogar a seguinte linha no topo do arquivo .htaccess: RedirectMatch "^(/oldfolder/.*).html" "$1"

Agora, se o URL solicitado for link , ele fará um redirecionamento 301 usando link e, em seguida, o Wordpress fará o resto, mudando para newfolder1, newfolder2, newfolder3 etc., conforme necessário, com base no restante do URI solicitado.

Você acreditaria que levei 4 horas para descobrir?

    
por 20.12.2017 / 22:05