.htaccess mod_rewrite - comment exclure le répertoire à partir de la règle de réécriture
J'ai 8 lignes de règles de réécriture dans mon .fichier htaccess. J'ai besoin d'exclure deux répertoires physiques sur mon serveur à partir de ces règles, de sorte qu'ils peuvent devenir accessibles. Pour l'instant, toutes les demandes sont envoyées à index.php fichier.
Répertoires à exclure: "admin" et "utilisateur".
Donc les requêtes http: http://www.domain.com/admin/ ne doit pas être transmis à index.php fichier.
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]
- Je crois que vous avez oublié les quantificateurs après
[^/]
depuis un simple espace si non autorisées (il faut l'échapper avec\<space>
). - Vrai Gumbo, bonne prise :). il devrait être ^([^/]+).
Vous devez vous connecter pour publier un commentaire.
Essayer cette règle avant vos autres règles:
Ce sera la fin du processus de réécriture.
($|/)
doit traiter les deux cas.RewriteRule
qui il est attaché. Et l'ajout de cette condition comme une niéeRewriteCond
à chaqueRewriteRule
peuvent être assez volumineux, un seulRewriteRule
comme une sortie au-dessus de ceux qui doivent être ignorées dans un tel cas est plus élégant.-
doit être là juste avant[L]
, quel est son but?%{REMORE_ADDR}
et peut être vérifié avec laRewriteCond
directive, commeRewriteCond %{REMOTE_ADDR} !^192\.168\..*$
.Ce que vous pourriez également faire est de mettre un .fichier htaccess contenant
Dans les dossiers que vous souhaitez exclure de la réécriture (par les règles dans un .fichier htaccess qui est plus haut dans l'arbre). Simple, mais efficace.
AllowOverride
à rien d'autre qu'None
dans la config d'apache) et les forces de apache pour la recherche .htaccess à chaque requête. donc, si vous avez une forte fréquentée site web/serveur de système de fichiers/disque dur d'accès pourrait avoir un imense impact sur les performances...ajouter une condition à vérifier pour le répertoire admin, quelque chose comme:
Si vous souhaitez supprimer un répertoire particulier de la règle (ce qui signifie, vous pouvez supprimer le répertoire foo) ,vous pouvez utiliser :
Règles de réécriture ci-dessus va réécrire toutes les requestes de /index.php à l'exclusion des demandes de /foo/ .
D'exclure tous les existants directries, vous aurez besoin d'utiliser la condition suivante au-dessus de votre règle :
la règle suivante
réécrit tout (sauf directries) à /index.php .
Nous avons utilisé la suite de mod_rewrite règle:
Ce redirections (de façon permanente avec une redirection 301) tout le trafic vers le site de http://www.newdomain.com, à l'exception des demandes de ressources dans le /de test et /my-répertoires du dossier. Nous transférer à l'utilisateur de la ressource précisément ils ont demandé de l'aide (.*) groupe de capture, et l'intégration de $1 dans la nouvelle URL. L'esprit les espaces.