2017-07-04 2 views
1

Das mag wie eine doppelte Frage erscheinen, aber ich habe so viele SO-Posts mit ähnlichen Titeln gelesen, und jeder von ihnen ist viel weiter gekommen, als ich konnte, also scheint es, dass ich muss etwas Grundlegendes falsch machen, aber ich habe keine Ahnung was es ist. Das heißt, hier ist mein Problem:Wordpress add_rewrite_rule funktioniert nicht

Ich befolge die Schritte in der 'Basic Usage' Abschnitt der add_rewrite_rule documentation page, achten Sie darauf, zu leeren und neu zu schreiben Regeln.

Ich habe eine Seite mit einem ID von 68, bekam und ich möchte diese umleiten:

http://localhost.test.wordpress/leaf/68

dazu:

http://localhost.test.wordpress/index.php?page_id=68

ich, dass letztere überprüft haben, existiert und ich kann direkt dorthin navigieren.

So in functions.php Datei mein Thema, schrieb ich folgendes:

function custom_rewrite_basic() { add_rewrite_rule('^leaf/([0-9]+)/?', 'index.php?page_id=$matches[1]', 'top'); } add_action('init', 'custom_rewrite_basic');

Und dann ging ich zu den Einstellungen -> Permalinks Abschnitt der Platte, die meine WP Admin und klicken auf ‚Änderungen speichern‘ ohne Änderungen , wie es auf der Dokumentseite heißt.

Das Problem, das ich renne ist, dass, wenn ich zu http://localhost.test.wordpress/leaf/68 navigieren, ich einen 404-Fehler bekomme. Klar, die Dokumente zeigen an, dass dies nicht passieren sollte, und keiner der anderen SO-Posts, die ich gesehen habe, hatte dieses Problem (sie kommen über diesen Schritt hinaus und haben Schwierigkeiten in einem anderen Aspekt der Weiterleitung).

Der Umleitungscode, den ich in functions.php einfüge, ist ein exaktes Kopieren/Einfügen von der Dokumentseite, und dennoch werde ich aufgrund des 404 dazu gebracht, zu glauben, dass überhaupt kein WP-Code ausgeführt wird. Kannst du mich wissen lassen, was ich falsch mache? Ich bin völlig neu in WP.

+0

Ich hatte in letzter Zeit einige Probleme mit meinem Setup. Es hat mir wirklich geholfen, einen Neuschreibungsanalysator zu bekommen. Ich habe Monkeyman benutzt, du kannst es im Plugin Repo bekommen. – Spartacus

+0

Ich bin super neu zu WP. Sollte ich das finden, indem ich zu Plugins -> Add Plugin gehe und nach 'Monkeyman' suche? –

+0

Ja genau. Es ist Monkeyman Rewrite Analyzer. – Spartacus

Antwort

2

Wenn die Site Änderungen an der .htaccess-Datei nicht zu respektieren scheint, sollten Sie sicherstellen, dass die <VirtualHost>-Konfiguration den .htaccess-Dateien explizit die Berechtigung zum Überschreiben bestimmter Konfigurationen erteilt.

In Ihrem <VirtualHost> Eintrag sollte auch ein <Directory> Eintrag sein. Sie müssen den AllowOverride All Befehl, um es hinzuzufügen, wie folgt aus:

<Directory /path/to/your/web/document/root> 
     AllowOverride All 
     Require all granted 
</Directory> 

Auch wenn die Website nicht ist Ihre Rewrite Befehle zu respektieren, sollten Sie sicherstellen, dass Ihr httpd.conf zu überprüfen, um zu sehen, ob das Modul mod_rewrite ist geladen.Suchen Sie nach einer Zeile wie folgt aus:

LoadModule rewrite_module libexec/apache2/mod_rewrite.so 

Wenn es mit einem # kommentiert aus Kommentar- der Zeile (entfernen Sie das #) und starten Sie den Apache.

+0

Es war das AllowOverride All-Bit, das ich vermisste. Vielen Dank! –

2

Basierend auf Ihren ergänzenden Antworten in den Kommentaren klingt Ihr .htaccess nicht so, als wäre es richtig eingerichtet (Server 404 Seite statt WP 404 holen). Fügen Sie die folgenden in der .htaccess-Datei:

# 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 

Diese Umleitungen (fast) jede Anfrage auf index.php, intern von WP verarbeitet werden. Dies muss richtig für Ihre rewrite rules to be processed by WP eingerichtet werden.

+0

Danke für die Information! Leider ist dies genau das, was meine .htaccess-Datei bereits enthält. Irgendwelche anderen Ideen? –

+1

Es muss etwas mit Ihrem Server-Setup sein, wenn die Anfrage nicht einmal zu WP kommt. – Spartacus

+0

Ich habe mich entschieden zu testen, ob .htaccess verwendet wird. Um dies zu tun, ersetzte ich seinen gesamten Inhalt mit: "ErrorDocument 404 /filenotfound.html DirectoryIndex first.html" und fügte dann filenotfound.html und first.html hinzu, nur um zu sehen. Nichts hat sich im Verhalten der Seite geändert, als ich zu localhost.test.wordpress/.... navigierte. Ich bin nicht wirklich sicher, wie ich von diesem Punkt aus vorgehen soll. –