Diretório de acesso enquanto a reescrita de mod está ativada

1

Estou usando o seguinte arquivo .htaccess para manter meu URL limpo

RewriteEngine On
RewriteRule ^([a-zA-Z\-0-9]+)/?$ index.php?get1=$1 [B]
RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/?$ index.php?get1=$1&get2=$2
RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/?$ index.php?get1=$1&get2=$2&get3=$3

Funciona até agora, mas agora quero acessar um diretório.

Por exemplo. Se alguém acessar mysite.com/news/post-title, o URL será reescrito e tudo ficará bem.

Agora, quero ter um diretório que possa ser visualizado quando alguém acessa mysite.com/directory e exiba seu conteúdo.

Existe uma maneira de fazer isso?

    
por ppp 21.05.2012 / 23:24

2 respostas

3

Coloque um RewriteCond na frente de cada RewriteRule , para forçar o RewriteRule a ser ignorado se a solicitação for feita para um local que é um diretório e existe.

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z\-0-9]+)/?$ index.php?get1=$1 [B]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/?$ index.php?get1=$1&get2=$2
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/?$ index.php?get1=$1&get2=$2&get3=$3

Tudo o que você obterá é a listagem real do diretório. Se você quiser permitir que os usuários também acessem os arquivos dentro desses diretórios, você também deve adicionar uma condição a cada um deles que esteja checando a existência do arquivo:

RewriteCond %{REQUEST_FILENAME} !-f
    
por 21.05.2012 / 23:42
1

Eu gostaria de algo como o seguinte:

<Location /Somedirectory>
    Options Indexes
</Location>

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} -d [NC]
RewriteRule ^/Somedirectory - [L]

RewriteRule ^([a-zA-Z\-0-9]+)/?$ index.php?get1=$1 [B]
RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/?$ index.php?get1=$1&get2=$2
RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/?$ index.php?get1=$1&get2=$2&get3=$3
    
por 21.05.2012 / 23:51