Okay, ich habe gerade die erste Seite dieser Website erstellt. Es funktioniert, wenn ich die Standard-Permalink-Einstellungen verwende.
Wenn ich die Permalink-Einstellungen ändere, um den Post-Namen zu verwenden, erhalte ich einen HTTP 404.
Ich bin mir nicht sicher, was schief gelaufen ist oder ob ich etwas kaputt gemacht habe. Kann mir jemand bei der Reparatur helfen?
Die Seite wird auf Apache gehostet.
Jared Cobb
Verwendest du XAMPP oder MAMP? Es gibt ein paar häufige Probleme mit diesen Umgebungen, die dem WordPress Codex entnommen sind: Permalink-Probleme beheben
Benutzer von XAMPP (Windows): Einige Versionen von XAMPP aktivieren standardmäßig nicht mod_rewrite (obwohl es in Apache kompiliert ist). Um es zu aktivieren – und damit WordPress zu ermöglichen, die .htaccess-Datei zu schreiben, die zum Erstellen hübscher Permalinks benötigt wird – müssen Sie apache/conf/httpd.conf öffnen und die Zeile LoadModule rewrite_module modules/mod_rewrite.so auskommentieren (d. h. das Hash/Pound-Zeichen löschen ganz vorne in der Reihe).
Benutzer von WAMP (Windows): Einige Versionen von WAMP (alle Versionen?) aktivieren mod_rewrite nicht oder erlauben das Folgen von SymLinks standardmäßig nicht. Um die erforderliche Funktionalität zu aktivieren, navigieren Sie zur Datei apache/conf/httpd.conf, öffnen Sie sie mit einem Texteditor und kommentieren Sie die Zeile LoadModule rewrite_module modules/mod_rewrite.so aus (dh löschen Sie das Rauten-/Pfundzeichen am Anfang der Zeile). Dann gibt es weiter unten in derselben Datei einen Abschnitt, der mit der Zeile “Options FollowSymlinks” beginnt. Ändern Sie die zweite Zeile in diesem Abschnitt von „AllowOverride none“ in AllowOverride all. Speichern Sie die bearbeitete httpd.conf und starten Sie alle WAMP-Module neu. Ihre Permalinks sollten jetzt funktionieren.
Wenn Sie Apache verwenden, gibt es normalerweise zwei weitere Übeltäter für defekte Permalinks: .htaccess wird nicht generiert (aufgrund von Berechtigungseinstellungen) oder Apaches AllowOverride Direktive ist nicht aktiviert.
Erstens, wenn Sie sich per SSH in Ihren Server einloggen, sehen Sie eine generierte .htaccess-Datei im Stammverzeichnis? Wenn nicht, hat WordPress möglicherweise keine Berechtigung zum Schreiben dieser Datei. Es ist auch möglich die Datei tut existieren, aber dass WordPress sie nicht bearbeiten kann. In jedem Fall können Sie chmod diese Datei (und erstellen Sie sie, falls sie nicht existiert) auf 666.
Stellen Sie als Nächstes sicher, dass Ihre Apache-Konfiguration die folgenden Einstellungen hat:
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
Lesen Sie abschließend die Permalink-Probleme beheben Abschnitt des WordPress Codex. Es gibt mehrere andere Tipps und Vorschläge, warum Permalinks möglicherweise nicht funktionieren.
Diese wird auf Apache gehostet
– Ortund
17. Juni 2014 um 14:09 Uhr
@Ortund Entschuldigung, das habe ich verpasst. Ich habe meine Antwort aktualisiert, hoffentlich hilft das.
– Jared Cobb
17. Juni 2014 um 14:24 Uhr
Sie haben es nicht verpasst, ich dachte, es sei selbstverständlich, also habe ich diese Informationen nicht aufgenommen. Habe es jetzt aber hinzugefügt
– Ortund
17. Juni 2014 um 15:08 Uhr
Okay, die .htaccess sollte im Root-Verzeichnis für WP oder im Root-Verzeichnis für das Theme sein?
– Ortund
17. Juni 2014 um 15:09 Uhr
@Ortund Es sollte sich im Stammverzeichnis der Website selbst befinden (und es sieht so aus, als ob WordPress im Stammverzeichnis Ihrer Website ausgeführt wird). Es sollte auf dem gleichen Niveau sein wie das erste WordPress index.php Datei.
– Jared Cobb
17. Juni 2014 um 15:12 Uhr
In meinem Fall musste ich zuerst die aktualisieren .htaccess Datei im Stammordner meiner Website:
# 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
WordPress macht das automatisch, wenn es Schreibrechte hat. Andernfalls wird es sich beschweren, dass es nicht darauf schreiben kann, und das obige Codebeispiel geben, damit Sie die Datei manuell aktualisieren können .htaccess.
Danach habe ich die bearbeitet apache2.conf Datei. Unter Linux befindet es sich in /etc/apache2/apache2.confwird es einen Abschnitt wie diesen geben:
Veränderung AllowOverride None zu AllowOverride FileInfo.
Führen Sie abschließend die folgenden Befehle aus:
sudo a2enmod rewrite
service apache2 restart
All diese Schritte waren notwendig, um zu funktionieren.
AllowOverride FileInfo war mein fehlendes Stück.
– Stracke
3. März 2019 um 5:43 Uhr
Ich habe diesen Beitrag auf einer anderen Seite gefunden, der schon vielen Leuten geholfen hat
Ich habe es endlich geschafft, das Problem zu lösen! Die Lösung: Ich habe eine benutzerdefinierte Permalink-Struktur verwendet http://kyl.fi/%category%/%postname%/. Ich entfernte den abschließenden Schrägstrich (dh das letzte /) und voila. Ich bin mir jedoch ziemlich sicher, dass ich zuvor ohne Probleme eine Permalink-Struktur mit dem nachgestellten Schrägstrich verwendet habe, daher bin ich immer noch verwirrt und würde daran interessiert sein, mehr über dieses Problem zu erfahren, wenn jemand eine Erklärung hat.
Alle Standard-Permalinks haben ein abschließendes / darin.
In meinem Fall verwende ich den NGINX-Webbrowser mit meiner WordPress-Installation. Die Lösung besteht darin, den NGINX-Direktiven das folgende Code-Snippet hinzuzufügen:
Wenn Sie den hervorragenden (Open-Source-) ISPconfig.org-CPanel-Ersatz verwenden, dann gehen Sie zu Ihrer Sites-Seite, geben Sie auf der Registerkarte Optionen das obige Code-Snippet für NGINX-Direktiven ein. ISPconfig verfügt über eine Funktion zum Hinzufügen allgemeiner Code-Snippets für den schnellen Zugriff auf der Registerkarte Optionen.
Nachdem ich die obige Korrektur vorgenommen hatte, konnte ich alle Permalinks-Optionen von WordPress verwenden.
Dung
Getestete Arbeitslösung:
in Ihrer Apache2-Konfigurationsdatei zum Beispiel:
/etc/apache2/sites-enabled/000-default.conf oder mysite.conf etc ..
Stellen Sie sicher, dass Sie param gesetzt haben und nicht leer sind: ServerName www.example.com or 123.212.333.111
Stellen Sie außerdem sicher, dass Sie Verzeichnisregeln wie unten festgelegt haben (Ihre Rewrite-Regeln wurden möglicherweise nicht in der .htaccess-Datei wirksam, daher fügen Sie sie hier ein und versuchen herauszufinden, warum .htaccess nicht funktioniert. htaccess funktioniert nicht Apache):
<Directory /var/www/html>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</Directory>
Amir Goodarzi
Muss eine 2-Punkte-Prüfung sein: 1. Code zur .htaccess-Datei hinzufügen:
# 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
Und die Berechtigung der .htaccess-Datei muss sein: 644
Maxime
In Centos 8 und Apache 2.4 schauen Sie in /etc/httpd/conf.d in Ihrer Site-.conf-Datei, fügen Sie AllowOverride All hinzu, Beispiel wie dieses
<Directory /path/to/site>
#add the following setting to allow .htaccess in your web dir to work
AllowOverride All
</Directory>
MY 80 LISTEN PORT
#Listen 80
<VirtualHost *:80>
DocumentRoot "/var/www/mysite.com"
ServerName www.mysite.com
# Other directives here
<Directory "/var/www/mysite.com">
Options FollowSymLinks
AllowOverride All
</Directory>
RewriteEngine on
RewriteCond %{SERVER_NAME} =www.mysite.com [OR]
RewriteCond %{SERVER_NAME} =mysite.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
MEIN VIRTUELLER SSL-HOST:
<IfModule mod_ssl.c>
<VirtualHost *:443>
DocumentRoot "/var/www/mysite.com"
ServerName www.mysite.com
# Other directives here
<Directory "/var/www/mysite.com">
Options FollowSymLinks
AllowOverride All
</Directory>
ServerAlias mysite.com
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/mysite.com/fullchain.pem
SSLCertificateKeyFile /live/mysite.com/privkey.pem
</VirtualHost>
</IfModule>
Starten Sie den Apache-Dienst neu. Überprüfen Sie Ihren .htaccess (auf meiner Seite befindet sich der .htaccess in /var/www/mysite.com My .htaccess
siehe helloWorld Rewrite-Regel. Wenn Sie url aufrufen www.mysite.com/helloWorld und der Browser zeigt Ihre Homepage, die Konfiguration funktioniert und der Permalink-Pfad zur Site funktioniert.
14021700cookie-checkHTTP 404 mit Post-Namen-Permalinkyes