Impossible d'accéder aux sous-répertoires autres que WordPress, car WordPress les remplace par une erreur 404

35

Je me réfère à cette question précédemment posée et à laquelle il n’a pas répondu de manière appropriée: Wordpress écrasant les sous - répertoires réels et les pages / codes non "Wordpress" obtenant une erreur 404

J'ai le même problème et j'ai essayé presque tout ce que j'ai trouvé sur le net. C'est définitivement lié au fait d'avoir des permaliens activés dans le wordpress. Cependant, j'ai mis un nouveau fichier .htaccess dans le sous-répertoire avec:

RewriteEngine off

et le problème existe toujours. Même si je supprime complètement le fichier wordpress .htaccess, le problème persiste.

J'ai également essayé d'autres solutions suggérées, telles que ErrorDocument 401 "Accès non autorisé" et ErrorDocument 404 "Accès non autorisé" et Redirect 301 / mysubdirectory http://www.mydomain.com/mysubdirectory/index.html dans divers emplacements, en vain. .

Quelqu'un peut-il s'il vous plaît offrir une autre solution? La seule façon de résoudre ce problème est de désactiver les liens permanents, mais nous devons les activer.

Merci,

Nicole

Nicole
la source
Que se passe-t-il si vous renommez index.php en index.bak dans le dossier racine de WordPress? Le répertoire n'est-il toujours pas accessible?
Horttcore
Avez-vous essayé de redéfinir l'URL de base dans votre sous-dossier .htaccess (avec ce sous-dossier comme valeur)?
Cédric G

Réponses:

29

Je suppose que vous avez mis WordPress à la racine de votre site et que les répertoires externes sont également à la racine de votre site. La raison en est que les fichiers .htaccess suivent une hiérarchie. Quelles que soient les directives figurant dans le fichier .htaccess de niveau supérieur, s’écoulent vers le bas et s’appliquent à tous les répertoires situés en dessous.

Si c'est le cas, vous pouvez faire l'une des choses suivantes:

  1. Déplacez votre WordPress dans son propre répertoire. Voir: http://codex.wordpress.org/Moving_WordPress Si vous déplacez WordPress dans son propre répertoire de sorte qu'il se trouve au même niveau dans la hiérarchie des répertoires de votre serveur que les autres répertoires, les règles de réécriture de WordPress ne peuvent pas affecter les autres répertoires.

  2. RewriteEngine Off - cela fonctionnerait normalement. Si cela ne fonctionne pas, vérifiez que vous n'utilisez pas de paramètre DNS générique. Si vous avez un enregistrement générique * nom d'hôte pointant sur votre serveur Web dans vos paramètres DNS, cela peut causer des dégâts avec .htaccess et les sous-domaines.

  3. Dans le fichier .htaccess situé à la racine de votre site, ajoutez les informations suivantes AU-DESSUS des directives .htaccess de WordPress:

    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_URI} ^/subdirectoryname1/(.*)$ [OR]
    RewriteCond %{REQUEST_URI} ^/subdirectoryname2/(.*)$ [OR]
    RewriteRule ^.*$ - [L]
    </IfModule>

L'un d'entre eux devrait fonctionner pour vous.

Elpie
la source
18

Cela a fonctionné pour moi dans le passé pour une situation similaire:

Mettez ceci au dessus de .htaccess

ErrorDocument 401 default
mike23
la source
2
Merci! J'ai essayé tellement de choses, mais c'est la seule solution qui a fonctionné pour mon cas: sous-répertoire protégé par mot de passe
Rado
2
Travaillé pour moi aussi, aucune explication sur ce que cela fait et pourquoi ça marche?
Asaf
Cela fonctionne pour moi .. ne pas utiliser WordPress mais OpenCart et avoir le même problème. Une explication serait vraiment utile.
Billynoah
4

Lorsque je copie mes fichiers sur le même serveur, mais avec un dossier de sous-répertoires différent, lorsque je tente d'accéder à mes pages, index.php fonctionne correctement, mais les autres pages ne le sont pas et me donnent une erreur 404. Désolé pour mon mauvais anglais!!

Je viens de regarder dans mon htaccess l'original:

# COMMENCE WordPress

RewriteEngine On
RewriteBase /
RewriteCond% {REQUEST_FILENAME}! -F
RewriteCond% {REQUEST_FILENAME}! -D
RewriteRule. /index.php [L]

# FIN WordPress

et mettre le nouveau avec

# COMMENCE WordPress

RewriteEngine On
RewriteBase / sous-répertoire
RewriteCond% {REQUEST_FILENAME}! -F
RewriteCond% {REQUEST_FILENAME}! -D
RewriteRule. /subdirectoryfolder/index.php [L]

# FIN WordPress
lizette
la source
Bonjour @lizette. Bienvenue sur les forums WPSE. Vous voudrez peut-être vérifier comment le formatage fonctionne ici.
Pothi Kalimuthu
4

Je vois que ce fil a quelques mois, mais juste au cas où vous ne l'auriez jamais fait fonctionner!

J'avais un problème similaire, mais mon problème était que l'installation de wordpress était située dans le sous-répertoire, ce qui empêchait l'accès des URL aux dossiers situés dans la racine (en dehors du répertoire d'installation de WP), mais uniquement lorsque les liens permanents étaient activés. Pour résoudre ce problème, j'ai copié index.php et .htaccess (copie non déplacée) du sous-répertoire où se trouve l'installation de WP et les ai placés à la fois dans le répertoire racine public_html (ou dans tout autre sous-répertoire auquel vous essayez d'accéder en dehors de l'installation de WP). annuaire). Le fichier .htaccess a déjà les conditions de réécriture pour les permaliens:

RewriteEngine On
RewriteBase /subdirectoryinstallfolder/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

Activez les permaliens pour l'actualisation, ce qui a résolu tous les problèmes. Assurez-vous également que vos autorisations pour les dossiers racine sont correctement définies, car cela m'a causé des problèmes par le passé.

Kirsten Douglas
la source
3

Si vous avez encore des 404 avec le htaccess désactivé et que vous avez vérifié les chemins et que vous savez que les fichiers sont là, vos seules options restantes sont ces trois ...

Options ...

  1. Le serveur exécute probablement un système d'exploitation sensible à la casse. Ce qui signifie que si vous tapez dans un chemin sans utiliser les caractères exacts, vous ne pourrez tout simplement pas le mettre en majuscule.
  2. Autorisations: les autorisations sur le fichier, le dossier ou le dossier parent peuvent être incorrectes. Essayez de modifier les autorisations sur 755 pour les fichiers, les dossiers et les dossiers parents. Si vous avez un accès ssh (terminal) à celui-ci, allez à votre racine et exécutez ce "chmod -R 755 mydir" et cela définira de manière récursive les permissions pour chacun d'eux.
  3. Si vous rencontrez toujours un problème après tout cela, vous avez un problème de configuration du serveur (probablement Apache). Vous devrez en discuter avec votre fournisseur d'hébergement.

Si rien ne fonctionne, vous avez besoin d'un nouvel hôte.

Patrick
la source
2

Après avoir presque arraché mes cheveux au montage htaccess, j'ai finalement trouvé une solution qui fonctionnera pour WordPress.

J'ai eu ce problème après avoir installé un script codeiginter sur le même répertoire racine que WordPress est installé.

Après avoir essayé toutes les astuces énumérées ici, il restait encore 404 erreurs sur les pages associées au nouveau script.

J'ai noté que le htaccess de WordPress surpassait celui du script. J'ai également noté que d'autres installations WordPress dans le même répertoire n'avaient pas cette erreur 404.

J'ai simplement adopté le htaccess de la nouvelle installation WordPress dans le même répertoire de serveur et l'a ajouté dans le dossier où se trouve mon script. Voici à quoi ça ressemble:

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

Remplacez nom de sous-répertoire par le nom de votre répertoire et placez ce fichier htaccess dans le dossier où se trouve votre script.

Exemple: si le site est installé ici

public_html/

et le nouveau dossier est situé

`public_html/example`

Copiez le fichier htaccess ci-dessus et enregistrez-le dans le dossier "exemple". Cela devrait fonctionner.

NJENGAH
la source
1

J'ai examiné les réponses ici à plusieurs reprises, car je rencontrais un problème similaire. J'ai des fichiers dans un sous-répertoire qui génèrent une erreur 404 lorsque j'ai essayé d'y accéder. Tout le contenu .htaccess n’a pas pu être corrigé, comme le dit Kirsten Douglas, Wordpress fait déjà le travail.

Ma solution

J'ai trouvé cet article après avoir vérifié le error_log sur le serveur. Je recevais un message sur le mauvais identifiant pour les scripts. J'ai aussi remarqué que le 404 n'était pas lancé à cause du fichier, mais parce que le serveur ne pouvait pas servir un fichier 500.html, c'est-à-dire que j'avais une erreur 500.

Il s'avère que j'avais créé des fichiers en tant que root et que je devais en changer le propriétaire en propriétaire du fichier Web.

J'espère que cela aide les autres qui ont eu le même problème!

Dan
la source
0

Vous devriez pouvoir simplement ajouter une RewriteConddirective qui garantira que les règles WordPress sont ignorées pour les demandes dans votre sous-dossier.

RewriteCond %{REQUEST_URI} !^/mysubdirectory
# rest of WordPress rewrite rules

Cependant, vous dites que même sans WordPress, .htaccessvous rencontrez le problème? Quel est le contenu de votre sous .htaccess- répertoire ?

TheDeadMedic
la source