it-swarm.com.de

WP Seite und Unterverzeichnis mit demselben Namen

Ich habe ein Unterverzeichnis in meiner WP -Installation mit dem Namen labs. Ich habe auch eine WP Seite namens labs erstellt. Wenn ein Benutzer mydomain.com/labs/ drückt, möchte ich, dass er die Seite WP hochlädt. Stattdessen wird die Verzeichnisliste labs geladen.

Ich habe einige Möglichkeiten gelesen, dies zu tun, wenn ich möchte, dass meine WP -Seite einen anderen Namen als mein Verzeichnisnamen hat, aber ich möchte das nicht wirklich. Zum Beispiel möchte ich haben:

mydomain.com/                <-- WP Root
mydomain.com/labs/           <-- Pretty WP page listing all of my projects
mydomain.com/labs/project1/  <-- raw (i.e. no WP) web app
mydomain.com/labs/project2/  <-- raw (i.e. no WP) web app

Ist das möglich?

Ich sollte auch erwähnen, dass WP im Stammverzeichnis von mydomain.com installiert ist, sodass /labs/ sowohl eine WP-Seite als auch ein manuell erstelltes Unterverzeichnis ist.


Lösung : Ich habe meinen Ordner labs in projects umbenannt und folgende .htaccess-Datei verwendet.

RewriteEngine On
RewriteCond %{REQUEST_URI} labs/(.+)$
RewriteCond %{REQUEST_URI} !labs/(.+)/$
RewriteRule ^labs/(.+)$ http://mydomain.com/labs/$1/ [L]
RewriteRule ^labs/(.+)$ projects/$1 [L]

Ich bin ein wenig unklar, warum ich verwenden musste

RewriteRule ^labs/(.+)$ http://mydomain.com/labs/$1/ [L]

statt nur

RewriteRule ^labs/(.+)$ labs/$1/ [L]

Aber als ich Letzteres benutzte, hat es den abschließenden Schrägstrich nie angehängt.

3
ggutenberg

Sie müssen etwas .htaccess-fu ausführen, um das zu erhalten, was Sie zur Arbeit vorschlagen.

RewriteCond $1 ^/labs/(.+)
RewriteRule ^/labs/(.*)$ /labs-folder/$1 [L]

Dies ist noch nicht getestet, aber wenn Sie es vor den WordPress-Regeln in Ihre HTAccess-Datei einfügen, werden URLs neu zugeordnet, die mit/labs/nach/labs-Ordner/beginnen, aber nicht, wenn die URL nur "/ labs" ist /" allein.

Lassen Sie mich wissen, wenn es nicht funktioniert und ich werde es mit Ihnen debuggen.

Sie können "labs-folder" durch einen beliebigen Ordnernamen ersetzen, im Wesentlichen jedoch durch eine URL wie:

http://example.com/labs/project1/

Werde hier wirklich suchen:

http://example.com/labs-folder/project1/
2
sanchothefat

Sie können nicht sowohl eine WP -Seite als auch ein Verzeichnis mit demselben Namen haben, es sei denn, Sie erstellen auch /labs/index.php und führen darin seltsame Hacker-Aktionen durch.

Eine andere Lösung wäre, das Verzeichnis umzubenennen und einige .htaccess-Tricks auszuführen, damit die Dateien im Verzeichnis unter der URL/labs/bereitgestellt werden.

3
scribu

Ich habe festgestellt (zumindest bei meinem Hosting-Service), dass es nicht erforderlich ist, die in Konflikt stehenden Verzeichnisse umzubenennen. Sie müssen eine Ausnahme für jede Seite erstellen, die WordPress verarbeiten soll, und zwar wie folgt:

RewriteCond %{REQUEST_FILENAME} /labs/$ [OR]
RewriteCond %{REQUEST_FILENAME} /page2/$ [OR]
RewriteCond %{REQUEST_FILENAME} /page2/page3/$
RewriteRule . /index.php [L]

Diese Regeln weisen den Server grundsätzlich an, alle Anfragen, die in Verzeichnissen mit diesen Namen enden, an /index.php, das Hauptskript von WordPress, weiterzuleiten. (Dies setzt voraus, dass sich WP im Stammverzeichnis befindet). Um zu verhindern, dass eine URL mit der Endung/labs/etc. übereinstimmt, müssen die Bedingungen mit genügend Pfadnamen zu diesen Verzeichnissen auf Ihrem Server qualifiziert werden, damit sie eindeutig sind. Der Serverpfad muss hier verwendet werden, da ich mit% {REQUEST_FILENAME} übereinstimme. Ich nehme an, dass% {REQUEST_URI} es Ihnen erlaubt, stattdessen mit der URL abzugleichen, aber ich habe es nicht versucht. So wird jede Bedingung so etwas wie

RewriteCond %{REQUEST_FILENAME} /path/to/html/labs/$ [OR]

Außerdem müssen Sie am Ende jeder RewriteCond-Zeile eine [OR] -Option haben, AUSSER der letzten.

Diese Zeilen habe ich dann vor den von WordPress erstellten Umschreiberegeln eingefügt, die prüfen, ob ein Verzeichnis oder eine Datei vorhanden ist. Hier wäre das endgültige Regelwerk:

# Modified WP rewrites
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} /path/to/html/labs/$ [OR]
RewriteCond %{REQUEST_FILENAME} /path/to/html/page2/$ [OR]
RewriteCond %{REQUEST_FILENAME} /path/to/html/page2/page3/$
RewriteRule . /index.php [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . /index.php [L]
</IfModule>

Beachten Sie, dass ich den # BEGIN WordPress-Kommentar entfernt habe. Ich habe dann meine .htaccess-Datei schreibgeschützt, um zu verhindern, dass WordPress seine Regeln wieder hinzufügt. Ich denke nicht, dass diese Schritte notwendig waren. Wenn Sie die neuen Regeln über den # BEGIN WordPress-Kommentar setzen und sie in die anderen Zeilen einschließen, um die Rewrite-Engine einzuschalten, werden sie wahrscheinlich noch funktionieren, aber ich habe diese Konfiguration nicht getestet.

Ich habe gerade meine alte statische HTML-Site auf WordPress migriert und versucht, alle herunterladbaren Dateien in den Originalverzeichnissen mit den Seiten zu belassen, zu denen sie gehören. Dieses Setup machte es möglich.

Hoffe das hilft jemandem!

(PS: Wo ist die Hilfeseite für die Abschriftensyntax? Ich habe nach ungefähr 15 Minuten gesucht und konnte sie nicht finden ...)

2
Anthony Kozar

Ändern Sie Ihre .htaccess-Datei, ohne Ihren Ordner umzubenennen:

#a request finished with '/labs/'
RewriteCond %{REQUEST_FILENAME} /labs/?$
#processed by wordpress
#change index.php prefix according to your original wordpress .htacccess
RewriteRule . index.php [L]
#put before the other RewriteConds
1
ooscarr

Deine Frage scheint ein paar zu sein :)

  1. sie sollten keine Seite labs erstellen müssen, da dies bereits das Ausgangsverzeichnis Ihrer WordPress-Installation ist.

  2. wenn die Verzeichnisliste angezeigt wird, dann würde ich sicherstellen, dass WordPress richtig installiert ist. Ist die .htaccess-Datei auch dort und befindet sich möglicherweise die .htaccess-Datei in Ihrem Hauptverzeichnis (mydomain.com), wodurch das Verzeichnis im WordPress-Verzeichnis (mydomain.com/labs/) angezeigt wird?

  3. Mit dem Navigationsmenü können Sie die Links so einrichten, wie Sie sie einrichten möchten, also zeigen project1 und project2 auf Dinge außerhalb von WordPress, aber Sie müssen sicherstellen, dass Sie nichts in WordPress mit den gleichen Namen versehen, und ich denke dass Sie Unterverzeichnisse unter dem Labs-Verzeichnis einrichten müssen.

0
user2015