url sendo anexado para redirecionar o link htaccess

1

No meu arquivo .htaccess sempre que eu criar redirecionamentos 301, o URL a ser redirecionado é anexado ao URL para o qual será redirecionado. Por exemplo:

Redirect /linksresources.html http://example.com/resources/

Vai me redirecionar para:

http://example.com/resources/?/linksresources.html

O arquivo .htaccess existente:

#404 Custom Error page
#ErrorDocument 404 /error_docs/404.php

#force IE out of compatibility mode
<FilesMatch "\.(htm|html|php)$">
    <IfModule mod_headers.c>
        BrowserMatch MSIE ie
        Header set X-UA-Compatible "IE=Edge,chrome=1"
    </IfModule>
</FilesMatch>

#Disable Indexing
Options -Indexes 


Order Deny,Allow
Allow from All




Redirect /linksresources.html http://example.com/resources/



RewriteEngine On
RewriteOptions inherit

#if request is not an existing file or directory then redirect to
#codeigniter boot.php file
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ boot.php?/$1 [L,QSA]

Sinto que resolvi essa questão no passado, mas não me lembro o que foi que fiz. Alguém tem alguma sugestão?

    
por nullReference 12.10.2016 / 20:10

1 resposta

1

Este é o resultado de um conflito com suas diretivas mod_rewrite, que estão executando antes da diretiva mod_alias Redirect , apesar da ordem aparente em seu arquivo de configuração. Módulos diferentes são executados em momentos diferentes durante a solicitação. Por esse motivo, não é recomendado combinar redirecionamentos de ambos os módulos.

Especificamente, o RewriteRule existente está sendo acionado, pois presumivelmente /linksresource.html não existe como arquivo físico e está sendo reescrito internamente em boot.php?/linksresource.html . O mod_alias Redirect então dispara, combinando /linksresource.html com a solicitação original e redireciona para http://example.com/resources/?/linksresources.html - passando a string de consulta através da requisição reescrita.

Já que você já está usando o mod_rewrite, você deve mudar o mod_alias Redirect para o equivalente mod_rewrite RewriteRule :

RewriteRule ^linksresources\.html$ http://example.com/resources/ [R=302,L]
    
por 12.10.2016 / 21:27