Aller au contenu

Exclure un répertoire


Sujets conseillés

Bonjour à tous,

J'ai un soucis sur mon blog (wordpress) car je ne parviens pas à accéder à mes statistiques Awstats, cela me ramène à chaque fois sur la page d'accueil du blog.

Si je rajoutes RewriteEngine Off en tête de mon fichier htaccess de mon répertoire awstats, cela n'a aucun effet

A la racine de mon site, j'ai le fichier htaccess suivant :

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

J'ai mon répertoire Awstats qui se nomme Awstats et qui a le fichier htaccess suivant :

Options +ExecCGI
AddHandler cgi-script pl
DirectoryIndex awstats.pl

AuthUserFile /home/walt/domains/domaine.com/public_html/awstats/.htpasswd
AuthType Basic
AuthName "AwStats Protection"

<LIMIT GET POST>
require valid-user
</LIMIT>

Merci de votre aide.

Lien vers le commentaire
Partager sur d’autres sites

Merci bien pour ta réponse, mais malheureusement, cela ne résoud pas mon problème.

Pour information, awstats est bien fonctionnel sur des sites "standard". En revanche, sur un autre site avec Wordpress, j'ai le même soucis.

De manière à être précis, il s'agit du plugin awstats pour DirectAdmin.

Lien vers le commentaire
Partager sur d’autres sites

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

veut dire que si l'URL ne correspond pas à un fichier ou à un répertoire existant, l'URL doit être traitée par WordPress.

Je pense que tu pourrais y ajouter une exception pour AWStats (devant toute la partie WordPress):

RewriteRule ^awstats - [L]

Jean-Luc

Modifié par Jeanluc
Lien vers le commentaire
Partager sur d’autres sites

En étudiant tes règles et en les décrivant :

RewriteCond %{REQUEST_FILENAME} !-f <-- Si le nom de la ressource demandée n'est pas un fichier existant

RewriteCond %{REQUEST_FILENAME} !-f <-- Si le nom de la ressource demandée n'est pas un dossier existant

Si ces condifitions sont vérifiée,

RewriteRule . /index.php [L] <-- Réécrire la requête vers le fichier index.php.

Donc si effectivement ton dossier "awstats" existe et qu'il est accessible tu ne devrait pas avoir ce problème. Si tu es "ramené" (si c'est une redirection, l'adresse dans la barre change et donc ce n'est en tous cas pas ces lignes vu qu'elles font une réécriture locale).

Tu peux tester rapidement ceci en commentant avec un "#" au début de chacune de ces 3 lignes et en essayer d'accéder au dossier "awstats"...si la redirection s'effectue toujours c'est que ce ne sont pas ces lignes...si tu as d'autres lignes dans ce fichier donne-les nous...sinon il faut regarder un niveau au dessus dans ton arborescence et ainsi de suite jusqu'à arriver au fichier de configuration principal de Apache (souvent nommé httpd.conf).

Au passage, la ligne donnée par Jeanluc était à placer avant les 3 lignes déjà présentes dans ton fichier bien entendu ;)

Lien vers le commentaire
Partager sur d’autres sites

En étudiant tes règles et en les décrivant :

RewriteCond %{REQUEST_FILENAME} !-f <-- Si le nom de la ressource demandée n'est pas un fichier existant

RewriteCond %{REQUEST_FILENAME} !-f <-- Si le nom de la ressource demandée n'est pas un dossier existant

Si ces condifitions sont vérifiée,

RewriteRule . /index.php [L] <-- Réécrire la requête vers le fichier index.php.

Merci pour ces précisions concernant les conditions

Donc si effectivement ton dossier "awstats" existe et qu'il est accessible tu ne devrait pas avoir ce problème. Si tu es "ramené" (si c'est une redirection, l'adresse dans la barre change et donc ce n'est en tous cas pas ces lignes vu qu'elles font une réécriture locale).

Oui mon répertoire awstats existe, il contient le fichier awstats.pl et trois liens symbolique. Non, l'adresse ne change pas dans ma barre d'adresse.

Pour information, j'ai un accès SSH sur mon serveur

Tu peux tester rapidement ceci en commentant avec un "#" au début de chacune de ces 3 lignes et en essayer d'accéder au dossier "awstats"...si la redirection s'effectue toujours c'est que ce ne sont pas ces lignes...si tu as d'autres lignes dans ce fichier donne-les nous...sinon il faut regarder un niveau au dessus dans ton arborescence et ainsi de suite jusqu'à arriver au fichier de configuration principal de Apache (souvent nommé httpd.conf).

Je vous ai donner toutes les lignes de mes fichiers évidemment.

Je n'ai pas d'autres fichiers htaccess à des niveaux supérieurs.

Au passage, la ligne donnée par Jeanluc était à placer avant les 3 lignes déjà présentes dans ton fichier bien entendu ;)

Oui, j'avais bien compris

Lien vers le commentaire
Partager sur d’autres sites

Après test

blocage de RewriteBase /

=> accès au blog OK, toujours pas d'accès à awstats

blocage de RewriteCond %{REQUEST_FILENAME} !-f

=> erreur 500 sur le blog et tjrs pas d'accès à awstats

blocage de RewriteCond %{REQUEST_FILENAME} !-f

=> accès au blog OK, pas d'accès à awstats

blocage de RewriteRule . /index.php

=> accès accueil blog OK, plus d'accès aux posts, accès awstats OK

Lien vers le commentaire
Partager sur d’autres sites

En fait après avoir regardé ta règle ne semble pas faire ce que tu souhaites

RewriteRule . /index.php

"." ne correspond qu'à "un caractère"... il faut l'associer à un quantificateur (+, * ou ?)

RewriteRule .* /index.php

Serait plus logique :)

Ensuite pour en revenir à ton problème... ce que je verrais éventuellement c'est que le lien symbolique n'est pas jugé comme un fichier ou un répertoire lors de la réécriture. Pour ce point je t'avoue que je ne suis pas sîur car je n'ai jamais fait l'expérience d'un tel problème, mais peut-être que la directive suivante dans ton .htaccess pourrait résoudre le problème :

Options +FollowSymLinks

Sinon il y a encore une possibilité... dans le même registre, en désactivant la directive MultiViews tu évites que Apache cherche lui même un fichier à présenter lorsqu'il ne trouve pas directement la ressource demandée :

Options -MultiViews

J'ai regardé les source de WordPress, ne l'ayant pas utilisé récemment, et je ne vois aucun fichier .htaccess, est-toi qui a écrit ces règles ou est-ce un plugin de WP qui permet de tirer partit de la réécriture ?

Lien vers le commentaire
Partager sur d’autres sites

Peux-tu encore me confirmer une chose, est-ce que lorsque tu accède à l'adresse "../awstats/" l'adresse dans la barre d'adresse de ton navigateur change-telle (redirection) ou reste-t-elle telle quelle (et ton blog s'affiche à la place, réécriture) ?

Une petit chose encore, dans ton fichier.htaccess dans le répertoire "awstats" la ligne :

AddHandler cgi-script pl

Me semble plus juste si tu précises que "pl" est une extension en ajoutant un point devant (du moins c'est ainsi que le manuel Apache l'écrit) :

AddHandler cgi-script .pl

Lien vers le commentaire
Partager sur d’autres sites

En fait c'est bien ce que je pensais, le lien symbolique est certainement la cause de ton problème, je ne sais pas si ton répertoire "awstats" est lui aussi un lien symbolique, mais même si ce n'est pas le cas le fichier qui est chargé par défaut lorsque tu accède à l'URL en est un. À mon avis il suffit de rajouter cette condition aux deux autres tests (fichiers et dossiers), l'ordre des 3 testes n'a pas d'importance :

RewriteCond %{REQUEST_FILENAME} !-l

Lien vers le commentaire
Partager sur d’autres sites

Malheureusement, mon répertoire et le fichier awstats.pl ne sont pas des liens symboliques.

Contenu du répertoire awstats

awstats.pl
icon -> /usr/local/directadmin/plugins/awstats/hooks/cgi-bin/icon
lang -> /usr/local/directadmin/plugins/awstats/hooks/cgi-bin/lang
lib -> /usr/local/directadmin/plugins/awstats/hooks/cgi-bin/lib
plugins -> /usr/local/directadmin/plugins/awstats/hooks/cgi-bin/plugins

J'ai par ailleurs rajouté le code suivant mais cela ne change rien

RewriteCond %{REQUEST_FILENAME} !-l

Modifié par spinacle
Lien vers le commentaire
Partager sur d’autres sites

Cela devient vraiment un problème bizarre... parce que quand explicitement tu dis de ne pas réécrire l'URL commençant par "awstat" (peut-être faut-il refaire un test en élargisant cette règle à "tout ce qui contient awstats" --> RewriteRule awstats - [L] (cette fois sans le ^) cela ne change rien, si tu lui dis explicitement pour tous les fichiers, dossiers et liens symboliques qui existent ne pas faire la réécriture et ça ne marche pas je commence à être à court d'idées.

Pour diagnostiquer encore plus le problème, est-ce que ce problème est le même pour d'autres répertoires (essaie d'en créer un et d'y accéder comme tu le fais pour awstats) ?

Lien vers le commentaire
Partager sur d’autres sites

D'accord, j'ai regardé un peu du côté des forums de WordPress et il semble que ton problème corresponde à peu près à cela : http://wordpress.org/support/topic/89515

Et/ou à ce bug report : http://trac.wordpress.org/ticket/2397

Les solutions y sont écrites mais en anglais, si c'est un problème je t'aiderai volontiers à les comprendre.

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...