RewriteEngine acrescenta /% 25 / ao meu diretório http-https

1

Eu tenho meu arquivo de configuração configurado assim:

<VirtualHost *:80>
        RewriteEngine on
        RewriteCond %{HTTPS} off
        RewriteRule (.*) https://example.com/%$1 [R,L]
</VirtualHost>

<VirtualHost *:443>
        ServerAdmin webmaster@localhost
        DocumentRoot /ssd/www/
        SSLEngine on
        SSLCertificateFile /ssd/certs/example_com.crt
        SSLCertificateKeyFile /ssd/certs/example_com.key
        SSLCertificateChainFile /ssd/certs/example_com.ca-bundle
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

O problema é que, ao navegar para uma página HTTP padrão quando ela é redirecionada, ele anexa /%25/ ao domínio, por exemplo.

http://example.com é alterado para https://example.com/%25/ e http://example.com/my-category/my-page é alterado para https://example.com/%25/my-category/my-page .

    
por Hobbyist 16.11.2016 / 22:37

2 respostas

3

Talvez a Linha 4 deva ser:

RewriteRule (.*) mydomain.com/$1 [R,L]

% 25 é o valor codificado da URL de%

    
por 16.11.2016 / 22:41
1

Como Vikelidis já apontou, %$1 está com erro. No entanto, você tem outros problemas que também devem ser abordados.

A diretiva RewriteCond que verifica HTTPS (por exemplo, porta 443) no VirtualHost da porta 80 é redundante e deve ser removida.

Além disso, quando usado na configuração do servidor, o padrão RewriteRule corresponde ao caminho da URL completo, que inclui o prefixo da barra. Sua substituição resultará em uma barra dupla. O Apache recolhe isso mais tarde para resolver o pedido, no entanto, ele ainda está disponível em alguns casos, portanto, pode quebrar as regras posteriores.

Esse redirecionamento também deve ser um permanente 301, não um temporário 302 (o padrão) - mas apenas alterá-lo quando tiver certeza de que está funcionando OK.

Então, se estiver usando mod_rewrite, isso deve ser escrito como:

<VirtualHost *:80>
    RewriteEngine on
    RewriteRule /(.*) https://example.com/$1 [R=301,L]
</VirtualHost>

Então, novamente, você não precisa do mod_rewrite aqui. Um mod_alias Redirect seria mais eficiente:

<VirtualHost *:80>
    Redirect 301 / https://example.com/
</VirtualHost>
    
por 16.11.2016 / 23:11