Problema RewriteMap em .htaccess

1

Eu preciso redirecionar URLs do formulário subpage.php? sid = 123 para páginas nomeadas.

subpagemap.txt existe na raiz e contém apenas o seguinte delimitado por terminações de linha do Unix \ n:

1 a
2 b
3 c

O .htaccess é o seguinte:

Options +FollowSymlinks
RewriteEngine On
RewriteBase /
RewriteMap subpagemap txt:subpagemap.txt
RewriteCond %{THE_REQUEST} subpage\.php\?sid=([0-9]*)
RewriteRule ^.*$ ${subpagemap:%1|home}? [R=301,L,NC]

O problema é que estou recebendo um 500 Internal Server Error.

Quando eu comento a linha 4 do .htaccess, a linha 5 funciona bem e eu sou redirecionado para o mapa padrão - / home, o que sugere que é o arquivo de mapeamento que é o problema.

Assim que eu coloco a linha RewriteMap de volta, recebo um erro 500 Internal Server. Eu não tenho acesso aos logs do servidor e o RewriteLog parece não funcionar.

Eu também tentei as seguintes substituições uma por uma e juntas para tentar isolar o problema:

RewriteMap subpagemap txt:/subpagemap.txt
RewriteCond %{THE_REQUEST} subpage\.php\?sid=([0-9]*)
RewriteRule ^.*$ /${subpagemap:1|home} [R=301,L,NC]

Alguma idéia do que poderia ser o problema?

    
por Antony Carthy 27.11.2009 / 13:26

2 respostas

3

Na verdade, mesmo que os servidores suportem, o problema é que você está tentando definir o RewriteMap em um contexto por diretório (por exemplo, no arquivo .htaccess), o que não é permitido: link

Mova a definição para a configuração do servidor ou do host virtual, e isso deve funcionar.

Eu ainda percebi que você provavelmente já percebeu isso em um ano e meio:)

    
por 07.04.2011 / 14:06
1

Descobri que a resposta era que o host do servidor não suporta RewriteMap.

Isso desperdiçou umas boas 5 horas ou mais de depuração.

    
por 27.11.2009 / 15:00