Kein Zugriff auf Nicht-WordPress-Unterverzeichnisse möglich, da WordPress diese mit einem 404-Fehler überschreibt

34

Ich beziehe mich auf diese Frage, die zuvor gestellt und nicht angemessen beantwortet wurde: Wordpress überschreibt die tatsächlichen Unterverzeichnisse und auch Nicht-Wordpress-Seiten / -Code, die den Fehler 404 erhalten

Ich habe das gleiche Problem und habe fast alles ausprobiert, was ich im Internet gefunden habe. Es hängt definitiv damit zusammen, dass Permalinks in WordPress aktiviert sind. Ich habe jedoch eine neue .htaccess-Datei im Unterverzeichnis abgelegt mit:

RewriteEngine aus

und das problem besteht immer noch. Auch wenn ich die .htaccess-Datei von WordPress vollständig lösche, besteht das Problem weiterhin.

Ich habe auch einige andere Lösungsvorschläge wie ErrorDocument 401 "Unauthorized Access" und ErrorDocument 404 "Unauthorized Access" und Redirect 301 / mysubdirectory http://www.mydomain.com/mysubdirectory/index.html an verschiedenen Orten ausprobiert , ohne Erfolg .

Kann jemand bitte eine andere Lösung anbieten? Ich kann das nur beheben, indem ich Permalinks deaktiviere, aber wir müssen sie aktivieren.

Vielen Dank,

Nicole

Nicole
quelle
Was passiert, wenn Sie die Datei index.php im WordPress-Stammverzeichnis in index.bak umbenennen? Ist das Verzeichnis noch nicht erreichbar?
Horttcore
Haben Sie versucht, die Basis-URL in Ihrem Unterordner .htaccess neu zu definieren (mit diesem Unterordner als Wert)?
Cédric G

Antworten:

28

Ich gehe davon aus, dass Sie WordPress in Ihr Site-Stammverzeichnis einfügen und die externen Verzeichnisse sich ebenfalls in Ihrem Site-Stammverzeichnis befinden. Der Grund dafür ist, dass .htaccess-Dateien einer Hierarchie folgen. Welche Anweisungen auch immer in der .htaccess-Datei der obersten Ebene enthalten sind, sie fließen nach unten und gelten für alle darunter liegenden Verzeichnisse.

In diesem Fall können Sie eine der folgenden Aktionen ausführen:

  1. Verschiebe dein WordPress in ein eigenes Verzeichnis. Siehe: http://codex.wordpress.org/Moving_WordPress Wenn Sie WordPress in ein eigenes Verzeichnis verschieben, sodass es sich in Ihrer Serververzeichnishierarchie auf derselben Ebene befindet wie die anderen Verzeichnisse, können die WordPress-Umschreiberegeln keine Auswirkungen auf die anderen Verzeichnisse haben.

  2. RewriteEngine Off - das würde normalerweise funktionieren. Wenn dies nicht funktioniert, prüfen Sie, ob Sie keine Wildcard-DNS-Einstellung verwenden. Wenn Sie in Ihren DNS-Einstellungen einen Wildcard * -Hostnameneintrag haben, der auf Ihren Webserver verweist, kann dies zu Schäden mit .htaccess und Subdomains führen.

  3. Fügen Sie in der .htaccess-Datei in Ihrem Site-Stammverzeichnis ÜBER den .htaccess-Anweisungen von WordPress Folgendes hinzu:

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

Eine davon sollte für Sie arbeiten.

Elpie
quelle
17

Das hat bei mir in der Vergangenheit für eine ähnliche Situation funktioniert:

Legen Sie dies auf .htaccess

ErrorDocument 401 default
mike23
quelle
2
Vielen Dank! Ich habe so viele Dinge ausprobiert, aber dies ist die einzige Lösung, die in meinem Fall funktioniert hat: kennwortgeschütztes Unterverzeichnis
Rado
2
Arbeitete auch für mich, eine Erklärung, was es tut und warum es funktioniert?
Asaf
Das funktioniert bei mir .. nicht mit WordPress, sondern mit OpenCart und mit dem gleichen Problem. Eine Erklärung wäre sehr hilfreich.
Billynoah
4

Wenn ich meine Dateien auf den gleichen Server kopiere, aber mit einem anderen Unterverzeichnisordner. Wenn ich also versuchte, auf meine Seiten zuzugreifen, funktioniert index.php einwandfrei, aber die anderen Seiten funktionieren nicht und geben mir einen 404-Fehler. Entschuldigung für mein schlechtes Englisch!!

Ich schaue mir nur das Original an:

# BEGINNE WordPress

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

# ENDE WordPress

und lege die neue mit

# BEGINNE WordPress

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

# ENDE WordPress
Lizette
quelle
Hi @lizette. Willkommen in den WPSE-Foren. Vielleicht möchten Sie, um zu prüfen , wie die Formatierung funktioniert hier.
Pothi Kalimuthu
4

Ich sehe, dass dieser Thread ein paar Monate alt ist, aber nur für den Fall, dass Sie ihn nie zum Laufen gebracht haben!

Ich hatte ein ähnliches Problem, aber mein Problem war, dass sich die WordPress-Installation im Unterverzeichnis befand, wodurch der URL-Zugriff auf Ordner im Stammverzeichnis (außerhalb des WP-Installationsverzeichnisses) verhindert wurde, jedoch nur, wenn Permalinks aktiviert waren. Um dies zu lösen, habe ich sowohl index.php als auch .htaccess (Kopieren ohne Verschieben) aus dem Unterverzeichnis kopiert, in dem sich die WP-Installation befindet, und sie beide im Stammverzeichnis public_html (oder in dem Unterverzeichnis, auf das Sie außerhalb der WP-Installation zugreifen möchten) abgelegt Verzeichnis). Die .htaccess-Datei enthält bereits die Umschreibebedingungen für Permalinks:

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

Aktivieren Sie Permalinks zum Aktualisieren und es wurden alle Probleme behoben. Stellen Sie sicher, dass Ihre Berechtigungen für die Stammordner ebenfalls korrekt festgelegt sind, da dies in der Vergangenheit zu Problemen geführt hat.

Kirsten Douglas
quelle
3

Wenn Sie immer noch 404 mit deaktiviertem htaccess erhalten und die Pfade überprüft haben und wissen, dass die Dateien dort sind, bleiben nur diese drei Optionen übrig ...

Optionen...

  1. Auf dem Server wird möglicherweise ein Betriebssystem mit Groß- und Kleinschreibung ausgeführt. Das heißt, wenn Sie einen Pfad eingeben und nicht die genauen Zeichen und Groß- / Kleinschreibung verwenden, funktioniert dies einfach nicht.
  2. Berechtigungen: Möglicherweise verfügen Sie über die falschen Berechtigungen für die Datei oder den Ordner oder einen übergeordneten Ordner. Versuchen Sie, die Berechtigungen für die Dateien, Ordner und übergeordneten Ordner auf 755 zu ändern. Wenn Sie ssh (Terminal) -Zugriff darauf haben, gehen Sie zu Ihrem Stammverzeichnis und führen Sie dieses "chmod -R 755 mydir" aus. Dadurch werden die Berechtigungen für alle von ihnen rekursiv festgelegt.
  3. Wenn Sie danach immer noch ein Problem haben, haben Sie ein Problem mit der Serverkonfiguration (wahrscheinlich Apache). Sie müssen mit Ihrem Hosting-Anbieter darüber sprechen.

Wenn nichts davon funktioniert, brauchen Sie einen neuen Host.

Patrick
quelle
2

Nachdem ich mich beinahe am Haar gerupft hatte, fand ich endlich eine Lösung, die für WordPress funktioniert.

Ich hatte dieses Problem nach der Installation eines Codeiginter-Skripts im selben Stammverzeichnis, in dem WordPress installiert ist.

Nachdem ich alle hier aufgeführten Tricks ausprobiert hatte, wurden auf den mit dem neuen Skript verknüpften Seiten immer noch 404-Fehler angezeigt.

Ich bemerkte, dass der WordPress-htaccess den htaccess des Skripts überschritt. Ich habe auch festgestellt, dass andere WordPress-Installationen im selben Verzeichnis diesen 404-Fehler nicht hatten.

Ich habe einfach den htaccess aus der neuen WordPress-Installation in dasselbe Serververzeichnis übernommen und in den Ordner eingefügt, in dem sich mein Skript befindet. So sieht es aus:

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

Ersetzen Sie den Namen des Unterverzeichnisses durch den Namen Ihres Verzeichnisses und platzieren Sie diese htaccess-Datei in dem Ordner, in dem sich Ihr Skript befindet.

Beispiel: Wenn die Site hier installiert ist

public_html/

und der neue Ordner befindet sich

`public_html/example`

Kopieren Sie den obigen htaccess und speichern Sie ihn im Ordner 'example'. Dies sollte funktionieren.

NJENGAH
quelle
1

Ich habe mir die Antworten hier einige Male angesehen, da ich auf ein ähnliches Problem gestoßen bin. Ich habe Dateien in einem Unterverzeichnis, die einen 404-Fehler auslösen, wenn ich versuche, auf sie zuzugreifen. Das ganze .htaccess-Zeug konnte es nicht korrigieren, wie Kirsten Douglas sagt, Wordpress erledigt den Job bereits.

Meine Lösung

Ich habe diesen Artikel gefunden, nachdem ich das error_log auf dem Server überprüft habe. Ich habe eine Nachricht über eine falsche Benutzer-ID für Skripte erhalten. Ich bemerkte auch, dass der 404 nicht wegen der Datei geworfen wurde, sondern weil der Server eine 500.html-Datei nicht bedienen konnte, dh ich hatte einen 500-Fehler.

Es stellte sich heraus, dass ich Dateien als Root erstellt hatte und den Eigentümer in den Eigentümer der Webdateien ändern musste.

Ich hoffe, das hilft anderen, die das gleiche Problem hatten!

Dan
quelle
0

Sie sollten nur eine RewriteCondDirektive hinzufügen können , die sicherstellt, dass die WordPress-Regeln für Anforderungen in Ihrem Unterordner ignoriert werden.

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

Sie sagen jedoch, dass Sie das Problem auch ohne WordPress .htaccesshaben? Was ist der Inhalt Ihres Unterverzeichnisses .htaccess?

TheDeadMedic
quelle