O que há de errado com essa regra de reconfiguração de URL do apache?

2

Eu gostaria de redirecionar o link link

Aqui está o código em que estou ativando isso

 <Directory /var/www/folders>
            RewriteEngine on
            RewriteRule ^/abc/lmn$ ^/abc/lmn.html [NC,L]
            Options Indexes FollowSymLinks MultiViews
            AllowOverride None
            Order allow,deny
            allow from all
    </Directory>

O que há de errado com essa regra e este é o lugar correto para incluir as reescritas?

Obrigado

    
por user10211 21.06.2013 / 23:45

3 respostas

3

Os caminhos de reescrita funcionam de maneira diferente dentro de um contexto <Directory > . O caminho que você está correspondendo é o caminho completo do sistema de arquivos com o diretório atual (incluindo a barra final) removido.

O efeito disto é que você precisa remover a barra inicial de seu regex e a substituição ou mover a regra de reescrita para fora do contexto do diretório onde ela estará combinando o URI ao invés de um caminho do sistema de arquivos.

Observe que um arquivo .htaccess está implicitamente em um contexto de diretório porque está em um diretório.

Você também não deve ter um cursor na substituição. O segundo argumento não é um regex.

Você mencionou um redirecionamento em sua pergunta. Para que isso aconteça, você precisa de [R] ou um dos códigos mais específicos ( [R=301] ou [R=303] ) após o segundo argumento.

    
por 22.06.2013 / 01:07
0

Tente isso:

RewriteRule ^/abc/lmn$ /abc/lmn.html [NC,L]

De acordo com o link , os argumentos para RewriteRule são um padrão, um substituição e algumas bandeiras. O caractere ^ será tratado como um literal na parte de substituição, o que provavelmente não é o que você deseja.

mod_rewrite possui log excelente, o que pode ser útil para depurar esse tipo de problema. Ative-o com LogLevel alert rewrite:trace3 e ajuste o nível em qualquer lugar até trace8 para obter o nível de detalhe necessário. Mais detalhes sobre o registro aqui:

link

    
por 22.06.2013 / 00:02
0

Tente o seguinte:

<Directory /var/www/folders>
        RewriteEngine on
        RewriteBase /folders
        RewriteRule ^/abc/lmn$ /abc/lmn.html [NC,L]
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
</Directory>
    
por 22.06.2013 / 00:51