web-dev-qa-db-fra.com

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

Je me réfère à cette question précédemment posée et qui ne répond pas de manière appropriée: Wordpress annulant les sous-répertoires réels et aussi Pages non "Wordpress"/code 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. Tout en rien.

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

33
Nicole

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 l'autre. des 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 directives ABOVE suivantes au-dessus de WordPress .htaccess:

    <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.

28
Elpie

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

Mettez ceci au dessus de .htaccess

ErrorDocument 401 default
17
mike23

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 de la racine (en dehors du répertoire d'installation WP), mais uniquement lorsque les permaliens é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 WP et les ai placés tous les deux dans la racine public_html (ou le sous-répertoire que vous essayez d'utiliser). accéder en dehors du répertoire WP)). 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 que vos autorisations pour les dossiers racine sont également définies correctement, car cela m'a causé des problèmes par le passé.

4
Kirsten Douglas

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:

] ! -d 
 RewriteRule. /index.php [L] 
 
 # FIN WordPress

et mettre le nouveau avec

] }! -d 
 RewriteRule. /subdirectoryfolder/index.php [L] 
 
 # FIN WordPress 
3
lizette

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. Je recommande hostmonster.com pour l'hébergement bon marché qui offre un excellent support et offre un accès SSH. Je les utilise, coûte environ 5 $ par mois. Si vous avez besoin de quelque chose qui soit plus robuste et évolutif, mais qui présente toujours un bon prix, je vous recommande mediatemple.net. Ils offrent un hébergement en nuage évolutif à partir de 20 $ par mois. Bien que je n’irais avec la deuxième option que si vous vous attendez à voir une augmentation spectaculaire du trafic ou si vous avez déjà un trafic très important (je parle de 500 à plus de 1 000 par heure).

3
Patrick

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 me restait 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".

2
NJENGAH

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érerait une erreur 404 lorsque j'essayais 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 également remarqué que la 404 n'était pas projetée à 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!

1
Dan

Vous devriez pouvoir simplement ajouter une directive RewriteCond 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 avec no WordPress .htaccess vous rencontrez le problème? Quel est le contenu de votre sous-répertoire .htaccess?

0
TheDeadMedic