Problème de conflit entre htaccess

WRInaute discret
bonjour
j'ai un blog wordpress, j'ai souhaité sécuriser le dossier d'administration avec un htaccess et htpasswd. Cela ne marchait pas et donnait une erreur 404 à chaque fois que j'essayais d'accéder au répertoire d'administration.
J'ai fini par trouver que ce nouveau htaccess était en conflit avec celui placé à la racine du blog car lorsque je supprime ce htaccess à la racine, l'accès à l'administration fonctionne très bien.
Malheureusement je n suis pas un expert et je suis incapable de voir ce qui cloche dans ce htaccess original ci-dessous.
Qui pourrait m'aider à savoir ce qui cloche entre les deux fichiers ?
Code:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress





<files .htaccess>
order allow,deny
deny from all
</files>

<files wp-config.php>
order allow,deny
deny from all
</files>

IndexIgnore *
Options -Indexes


SetEnv REGISTER_GLOBALS 0
SetEnv ALLOW_URL_FOPEN 1
SetEnv ALLOW_URL_INCLUDE 0
SetEnv MAGIC_QUOTES 0
 
WRInaute accro
Bon déjà il faudrait mettre les choses dans un ordre logique, ça aiderait ^^

Dans le .htaccess à la racine du blog, tu commences par
- la définition éventuelle des variables d'environnement (le passage en php5 par exemple)
Code:
SetEnv REGISTER_GLOBALS 0
SetEnv PHP_VER 5

- ensuite tu rajoutes ça

Code:
<files .htaccess>
order allow,deny
deny from all
</files>

<files wp-config.php>
order allow,deny
deny from all
</files>

IndexIgnore *
Options -Indexes

Je te déconseille fortement la partie
Code:
SetEnv ALLOW_URL_FOPEN 1
SetEnv ALLOW_URL_INCLUDE 0
SetEnv MAGIC_QUOTES 0
qui peut générer des failles de sécurité, sauf si tu en as réellement besoin.

Enfin tu mets
Code:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

et c'est tout.

Dans le fichier .htaccess qui se trouve dans le dossier wpadmin, tu mets simplement

Code:
AuthType Basic
AuthName "blabla"
AuthUserFile chemincompletvers le fichier htpasswd/.htpasswd
Require valid-user

ça devrait marcher.

Tu auras une suite logique d'instructions pour ton serveur, dans le bon ordre.

Eventuellement, tu peux y aller morceau par morceau et voir quand ça couine.
 
WRInaute discret
Merci, peux-tu me dire à quoi correspond la partie que tu me déconseilles ? C'est le code original du htaccess :
Code:
    SetEnv ALLOW_URL_FOPEN 1
    SetEnv ALLOW_URL_INCLUDE 0
    SetEnv MAGIC_QUOTES 0
Parce que dans ce sujet : https://www.webrankinfo.com/forum/piratage-mon-site-intrusion-c99shell-t129 ... l#p1185217
justement il conseille de le mettre.
_____________________________________________
EDITION : la ligne qui pose problème est la suivante :
Code:
RewriteRule . /index.php [L]

Mais lorsque je l'enlève, tous les liens pointant vers les commentaires récents et articles récents renvoient vers l'erreur 404 et ce, pour tous les visiteurs.
Du coup je ne sais plus quoi faire :(
 
WRInaute accro
Elle fait partie des rewrite rules de wordpress.
Donc le plus simple est de repartir avec un fichier htaccess vide, d'enregistrer tes permaliens, selon la structure que tu souhaires, et de reprendre le fichier .htaccess généré

Les trois lignes forcent un paramétrage d'environnement,
Allow_url_include permet d'inclure des fichiers hébergés sur des noms de domaines différents, c'est la porte ouverte au hack si il est activé (ce qui n'est pas le cas dans le code
allow_url_fopen concerne aussi l'ouverture des fichiers distant
Magic quotes tu as une explication ici http://php.net/manual/fr/security.magicquotes.php
(et normalement tu es en php 5.3 sur ovh)

Ces directives sont à utiliser quand on sait ce qu'on fait (à noter que par défaut, sur les mutualisés, elles sont configurées de façon restrictives), par ailleurs certains hébergeurs comme OVH ont une syntaxe particulière...
 
WRInaute discret
Marie-Aude a dit:
Donc le plus simple est de repartir avec un fichier htaccess vide, d'enregistrer tes permaliens, selon la structure que tu souhaires, et de reprendre le fichier .htaccess généré
J'ai fait ce que tu m'as dit mais ça me génère exactement le même code avec la même ligne à problème alors que j'ai choisi une structure de permalien différent.
Toujours la même ligne :
Code:
RewriteRule . /index.php [L]

En raison de ce conflit est-il possible de modifier le htaccess du répertoire de l'admin ?
Code:
AuthName "Page d'administration protégée"
AuthType Basic
AuthUserFile "/home/domaine/domaine.com/wp-admin/.htpasswd"
Require valid-user
 
WRInaute accro
le htaccess de l'admin n'a rien à voir avec le premier
en revanche, si tu veux vraiment sécuriser ton admin, ne met pas le htpasswd dedans
 
WRInaute discret
tous les tutoriels disent de le mettre dedans :roll:
De toute façon le mot de passe est crypté. Mais je ne sais pas comment corriger cette erreur de page 404.
 
WRInaute accro
Non, les bons tutoriels disent de mettre le fichier .htpasswd ailleurs, et même si possible dans un répertoire en dehors du www.

L'erreur de page 404 est sur quelle url exactement ?
 
WRInaute discret
Sur tout ce qui est dans le répertoire wp-admin
par exemple :
Code:
http://www.mondomaine.com/wp-admin/
ne fonctionne pas.
 
WRInaute accro
Ecoute très honnêtement, là c'est dans le noir.
Les config htaccess dépendent de chaque hébergeur.
"Ne fonctionne pas" c'est bizarre, normalement si c'est un problème de htaccess, c'est une erreur 500, donc je dirais que tu as tripatouillé quelque chose qui n'allait pas dans les rewrite rules spécifiques à wordpress. mais comme cela génère une autre erreur qu'on ne connait pas non plus avec précision, qu'on ne connait pas la config de ton serveur, etc...
 
WRInaute discret
Ce que je ne comprends pas c'est que je ne dois pas être le seul dans ce cas là. Pourtant je ne trouve rien de semblable sur internet.
 
WRInaute accro
Je viens de faire le test sur un de mes blogs wp et çà fonctionne parfaitement.
J'ai bien la ligne /index.php

Donc si elle génère des erreurs, c'est sans doute par là qu'il faut chercher
 
WRInaute discret
Est-ce possible que l'hébergeur soit en cause ? je pense à cela car lors de navigation dans le répertoire d'administration via l'interface wordpress je rencontre souvent des erreurs 404 même avant d'avoir essayé d'installer des sécurité avec htaccess et htpsswrd.
 
WRInaute accro
Je te l'ai dit plus haut, en fonction de l'hébergeur, on peut formuler différemment certaines lignes. Tu as repris par exemples des lignes spécifiques à OVH, qui ne marcheront pas obligatoirement chez d'autres hébergeurs
 
WRInaute discret
Alors d'après toi quelle solution s'offre à moi ? Car je tiens absolument à protéger le répertoire par htpsswrd.
Par exemple, les liens du contenu principal ne sont pas affectés lorsque je supprime cette fameuse ligne. Seuls les liens des commentaires récents et articles récents sont touchés. Il faudrait peut-être que j'essaie de modifier leur structure. Je vais voir ça. Merci pour ton aide.
 
WRInaute accro
sam soul a dit:
Alors d'après toi quelle solution s'offre à moi ? Car je tiens absolument à protéger le répertoire par htpsswrd.
Si tu ne t'en sort pas avec le htaccess je craint que les options qu'il te reste pour arriver à ce résultat spécifique soit encore plus "hard" à mettre en oeuvre.
Quoi qu'il en soit si tu te sent d'intervenir dans tes scripts d'admin il te reste le choix d'envoyer directement les headers qui vont bien.

Code:
header('WWW-Authenticate: Basic realm="espace a accès privé');

etc ...
 
WRInaute discret
Je crois que j'ai trouvé une piste, sur ce sujet, il me semble que la personne rencontre le même problème, et semble donner la solution dans son dernier message.
Malheureusement je ne suis que modeste en anglais et j'ai cru comprendre qu'il fallait transformer le dossier en sous-domaine.
Mais je ne sais pas comment faire cela.
Si quelqu'un peut m'aider, merci.
 
WRInaute accro
ça ne te servira à rien, puisque wordpress ne comprendra pas l'adresse d'admin avec un sous domaine.
(ce qu'il veut dire c'est que tu fais un sous domaine qui pointe vers le répertoire en question, et que tu accedes donc à ce répertoire via le sous domaine)

Par ailleurs la solution concerne une installation Drupal, et pas wordpress, et les configs et la gestion des réécritures / répertoires est différente dans chacun des cms

Le .htaccess, c'est comme les médocs. ça marche pour une maladie, pas obligatoirement pour une autre, et quand on n'est pas toubib, il vaut mieux éviter de prendre les médocs d'un autre sous prétexte que ça a marché pour lui et que ce sont les mêmes symptômes.

Par ailleurs, le monsieur mentionne exactement ce vers quoi j'ai essayé de t'orienter, c'est à dire des différences de config entre les deux serveurs, qui n'ont pas la même version d'Apache.

Maintenant je te l'ai dit deux fois : parce que un .htaccess est spécifique à un environnement, en l'absence d'indications précises de ta part (url, hébergeur, éventuellement type de pack), on ne peut pas t'aider.
 
WRInaute accro
Marie-Aude a dit:
Par ailleurs la solution concerne une installation Drupal, et pas wordpress, et les configs et la gestion des réécritures / répertoires est différente dans chacun des cms
comme souvent d'un hébergeur à l'autre
 
Discussions similaires
Haut