.htaccess mod_rewrite – como excluir o diretório da regra de reescrita

Eu tenho 8 linhas de regras de reescrita no meu arquivo .htaccess. Eu preciso excluir dois diretórios físicos no meu servidor dessas regras, para que eles possam se tornar acessíveis. Por enquanto, todas as solicitações são enviadas para o arquivo index.php.

Diretórios para excluir: “admin” e “user”.

Então solicitações http: http://www.domain.com/admin/ não devem ser passadas para o arquivo index.php.

ErrorDocument 404 /index.php?mod=error404 Options FollowSymLinks RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC] RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L] RewriteRule ^([^/] )/([^/] )\.html$ index.php?lang=$1&mod=$2 [L] RewriteRule ^([^/] )/$ index.php?lang=$1&mod=home [L] 

Tente esta regra antes de suas outras regras:

 RewriteRule ^(admin|user)($|/) - [L] 

Isso terminará o processo de reescrita.

O que você também pode fazer é colocar um arquivo .htaccess contendo

 RewriteEngine Off 

Nas pastas que você deseja excluir, seja reescrito (pelas regras em um arquivo .htaccess que está mais acima na tree). Simples mas efetivo.

adicione uma condição para verificar o diretório admin, algo como:

 RewriteCond %{REQUEST_URI} !^/?(admin|user)/ RewriteRule ^([^/] )/([^/] )\.html$ index.php?lang=$1&mod=$2 [L] RewriteCond %{REQUEST_URI} !^/?(admin|user)/ RewriteRule ^([^/] )/$ index.php?lang=$1&mod=home [L] 
 RewriteEngine On RewriteRule ^(wordpress)($|/) - [L] 

Usamos a seguinte regra do mod_rewrite:

RewriteEngine on
RewriteCond% {REQUEST_URI}! ^ / Test /
RewriteCond% {REQUEST_URI}! ^ / Minha-pasta /
RewriteRule (. *) http://www.newdomain.com/ $ 1 [R = 301, L]

Isso redireciona (permanentemente com um redirecionamento 301) todo o tráfego para o site para http://www.newdomain.com , exceto solicitações para resources nos diretórios / test e / my-folder. Transferimos o usuário para o recurso exato que eles solicitaram usando o grupo de captura (. *) E, em seguida, incluindo $ 1 no novo URL. Mente os espaços.

Se você quiser remover um diretório específico da regra (ou seja, você deseja remover o diretório foo ), você pode usar:

 RewriteEngine on RewriteCond %{REQUEST_URI} !^/foo/$ RewriteRule !index\.php$ /index.php [L] 

O rewriteRule acima irá rewrite todos os pedidos para /index.php excluindo pedidos para / foo / .

Para excluir todas as diretivas existentes, você precisará usar a seguinte condição acima de sua regra:

 RewriteCond %{REQUEST_FILENAME} !-d 

a seguinte regra

 RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteRule !index\.php$ /index.php [L] 

reescreve tudo (exceto directries) para /index.php .