Eu tenho 8 linhas de regras de reescrita no meu arquivo .htaccess. Preciso excluir dois diretórios físicos no meu servidor dessas regras, para que possam se tornar acessíveis. Por enquanto, todas as solicitações são enviadas para o arquivo index.php.
Diretórios a serem excluídos: "admin" e "user".
Portanto, as 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]
.htaccess
mod-rewrite
url-rewriting
Kelvin
fonte
fonte
[^/]
um espaço simples, se não for permitido lá (deve ser escapado com\<space>
).Respostas:
Tente esta regra antes de outras regras:
Isso encerrará o processo de reescrita.
fonte
($|/)
deve lidar com ambos os casos.RewriteCond
sempre exige um aoRewriteRule
qual está anexado. E adicionar essa condição como negadaRewriteCond
a cada umRewriteRule
pode ser bastante volumoso, e mais simples doRewriteRule
que uma saída acima daquelas que devem ser ignoradas nesse caso é mais elegante.O que você também pode fazer é colocar um arquivo .htaccess contendo
Nas pastas que você deseja excluir da reescrita (pelas regras em um arquivo .htaccess que fica mais alto na árvore). Simples mas efetivo.
fonte
AllowOverride
para qualquer outra coisa que não sejaNone
na configuração do apache) força o apache a procurar .htaccess em cada solicitação. por isso, se você tem um site de alto freqüentado / webserver que sistema de arquivos / disco rígido de acesso poderia ter um impacto no desempenho imense ...adicione uma condição para verificar o diretório admin, algo como:
fonte
Se você deseja remover um diretório específico da regra (ou seja, deseja remover o diretório foo ), pode usar:
O rewriteRule acima reescreverá todas as solicitações no /index.php, excluindo as solicitações do / foo / .
Para excluir todas as diretivas existentes, você precisará usar a seguinte condição acima de sua regra:
a seguinte regra
reescreve tudo (exceto diretórios) em /index.php .
fonte
Usamos a seguinte regra mod_rewrite:
Isso redireciona (permanentemente com um redirecionamento 301) todo o tráfego para o site para http://www.newdomain.com , exceto solicitações de recursos nos diretórios / test e / / my-folder. Transferimos o usuário para o recurso exato solicitado, usando o grupo de captura (. *) E, em seguida, incluindo $ 1 no novo URL. Cuidado com os espaços.
fonte
fonte