.htaccess issue: barra final adicionada, mas não funciona para o subdiretório

1

Encontrei um código .htaccess bem funcional na Internet que removeu a extensão .html e adiciona uma barra no fim do URL.

No entanto, quando eu faço um link para um site em um subdiretório, ele não funciona, o subdiretório é automaticamente apagado no URL, então a página não é carregada.

Aqui está o meu código .htaccess:

AddHandler application/x-httpd-php71 .php

AddDefaultCharset utf-8

RewriteEngine on
RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301,NC]


RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^([^/]+)/$ $1.html 

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ /$1/ [R=301,L]

Eu também tenho esse mesmo .htaccess no dito subdiretório, que eu não tenho certeza se esse é o jeito certo de fazer isso.

Talvez seja necessário acrescentar que sou novo em codificação, mas comecei a criar uma atualização do meu site principalmente por extensas pesquisas no google sobre codificação, mas não sei realmente o que estou fazendo.

Alguém tem uma ideia de como posso corrigir esse problema?

Editar: para esclarecimento, posso acrescentar que o subdiretório do qual estou falando faz parte do mesmo site, então algumas partes dele gostaria de manter em um subdiretório apenas para manter as coisas organizadas.

    
por Lars 10.10.2018 / 17:14

1 resposta

0

I also have this same .htaccess in said subdirectory, which I'm not sure if that is the right way to do this.

Bem, isso realmente depende da sua estrutura de URL e de quantos segmentos de caminho você tem. O código .htaccess "funcionando bem" que você postou só funciona em segmentos de caminho único, por exemplo. arquivos na raiz do documento.

No entanto, você não precisa repetir esse arquivo .htaccess no subdiretório. Na verdade, essas diretivas não estão corretas se usadas em um subdiretório - o que provavelmente é o motivo pelo qual seu subdiretório está sendo "apagado". A última linha ( RewriteRule (.*)$ /$1/ [R=301,L] ) removerá o subdiretório da solicitação redirecionada quando usado dentro do subdiretório.

Tente:

  1. Remova o arquivo .htaccess no subdiretório.

  2. Altere a seguinte diretiva:

    RewriteRule ^([^/]+)/$ $1.html 
    

    Para ler:

    RewriteRule ^(.+)/$ $1.html
    

    Para segmentar qualquer nível de diretório. Caso contrário, é limitado a direcionar arquivos apenas na raiz do documento.

por 11.10.2018 / 02:16

Tags