Je travaille sur mon site et je rencontre des problèmes avec .htaccess
fichiers .htaccess
. J’ai un répertoire principal (dans mon cas public_html) avec un sous répertoire appelé admin
. Ce que je tente de gérer, c’est que si l’utilisateur final saisit l’URL comme example.com/admin
, il sera redirigé vers ce répertoire admin
qui contient le formulaire de connexion, le fichier index.php personnalisé, etc. Si une autre URL a été entrée, elle doit être vérifiée par certaines conditions. Voici mes fichiers .htaccess:
Pour le répertoire principal:
RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-l RewriteRule ^([^/]+)/([^/]+)/([^/]+)$ index.php?menu=$1&op=$2&id=$3 [QSA,L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-l RewriteRule ^([^/]+)/([^/]+)$ index.php?menu=$1&op=$2 [QSA,L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-l RewriteRule ^([^/]+)$ index.php?menu=$1 [QSA,L]
Pour le répertoire admin:
RewriteEngine off
En ce moment, le répertoire principal des fichiers .htaccess
fonctionne correctement après avoir entré des URL telles que:
example.com/news/article/4 example.com/news/list
example.com/home
mais si je example.com/admin
, il est associé à la troisième règle de réécriture et pense que «admin» est un lien de menu.
J’ai essayé différentes exceptions, mais rien n’a fonctionné pour moi, admin
est toujours associé à menu pas répertoire. Peut-être que mon fichier principal .htaccess a des erreurs? Quelqu’un pourrait-il me suggérer la bonne solution pour ce problème?
Vous n’avez pas besoin de .htaccess
dans le répertoire admin
. Il suffit d’avoir ces règles en root .htaccess:
DirectorySlash On DirectoryIndex index.php RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^ - [L] RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ index.php?menu=$1&op=$2&id=$3 [QSA,L] RewriteRule ^([^/]+)/([^/]+)/?$ index.php?menu=$1&op=$2 [QSA,L] RewriteRule ^([^/]+)/?$ index.php?menu=$1 [QSA,L]