Incerto sobre o que este conjunto de regras do .htaccess está fazendo

1

Eu herdei uma aplicação web e nela está o seguinte conjunto de regras .htaccess. Parece-me que eles não fazem nada. Alguém pode explicar o que estão fazendo?

Para mim, parece que eles estão combinando apenas ocorrências com a raiz do site, verificando se o diretório não existe (!) e, em seguida, redirecionando para a raiz do site.

RewriteCond %{REQUEST_URI} /$
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ $1 [L,R=301]
    
por e_i_pi 21.06.2017 / 02:33

2 respostas

2

Remove a barra no final de qualquer URL

por exemplo:

https://example.com/welcome/

torna-se:

https://example.com/welcome

O segundo RewriteCond especifica que a regra só coincide quando a URL não corresponde a um diretório existente no disco (pode ser um arquivo, por exemplo), é claro, automaticamente.

    
por 21.06.2017 / 02:44
2

Apenas para adicionar à resposta do OverCoder ... como já foi dito, este código remove a barra no final do URL (exceto para diretórios) ...

RewriteCond %{REQUEST_URI} /$
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ $1 [L,R=301]

No entanto, a primeira diretiva RewriteCond aqui é realmente supérflua e pode ser removida. Isso simplesmente verifica se o URL termina em uma barra, que é o que o padrão RewriteRule (ou seja, ^(.+)/$ ) já estabeleceu.

E a segunda diretiva RewriteCond certifica-se de que não estamos solicitando um diretório. Um diretório requer uma barra à direita. Por padrão, mod_dir adicionará uma barra final se você solicitar um diretório sem. Então, se você removeu a barra final nos diretórios com o mod_rewrite, provavelmente você criaria um loop de redirecionamento.

    
por 24.06.2017 / 12:05