Entfernen “.html" aus der URL über .htaccess für WordPress website
Hintergrund-Informationen:
Ich gesucht habe stackoverflow für eine bestimmte Lösung und konnte Sie nicht finden, eine, die Feste meine situation. Vielen Dank im Voraus für jede Hilfe, die Sie anbieten können. Ihr wissen wird geschätzt.
Habe ich beschlossen, zu akzeptieren, einen Vertrag zu "konvertieren" (in der client-Wörter) eine Joomla-Website in eine WordPress-Website. Alles reibungslos, außer, dass die Joomla-Website-links zu .html-Dateien, sowohl in der navigation und im Inhalt von 100+ posts.
Anstatt jeden post einzeln und die Aktualisierung der links oder das ausführen eines SQL-Befehls zu entfernen ".html" von URLs, ich habe beschlossen, den Druck auf .htaccess, mit denen ich mich etwas komfortabler.
, Was ich versuche zu tun, ↓
In WordPress, habe ich benutzerdefinierte permalinks aktiviert, und es ist wie folgt:
/%category%/%postname%
Hier ein Beispiel, was man von den alten URLs in den posts sieht wie folgt aus:
http://the-site.com/category/the-webpage.html
Brauche ich die htaccess-Datei zu sagen, den webserver zu entfernen .html, sodass der Benutzer nach dem Besuch von "http://the-site.com/the-webpage.html" wird stattdessen gesendet:
http://the-site.com/category/the-webpage
Ich bin einrichten die Seite stubs zu Folgen, der name der Datei, die Joomla Seiten, so http://the-site.com/category/the-webpage arbeiten.
Meine Frage:
Können Sie mir helfen, entdecken Sie die Lösung entfernen .html von der URL, wenn jemand die Website besucht, selbst wenn die HTML-Datei nicht auf dem server vorhanden?
Hier ist, wie die .htaccess-Datei aussah, bevor ich änderungen vorgenommen:
# 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
Hier ist das neueste .htaccess-Datei wie von 5:35pm Ost:
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} \.html$
RewriteRule ^(.*)\.html$ $1 [R=301,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
↑Neueste .htaccess änderungen arbeiten. Vielen Dank, Tim!
- Sie wollen den Vorteil haben, schreibt in die
<IfModule mod_rewrite.c
Abschnitt, zu. Ein [L] flag könnte gut sein, um hier hinzufügen, auch, da Sie andere schreibt, nachdem das html ein, und Sie gelten nicht. - Ich zog die Neuprogrammierungen innerhalb des <IfModule> Kapitel, und es gibt mir immer noch einen 404. Könnte das vielleicht etwas damit zu tun haben Unterkategorien und meine permalink-Struktur?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese arbeiten zu zwingen, eine externe Umleitung an Ihre neue URLs, aber dies möglicherweise nicht ideal für Ihre situation. Ich bin immer noch versuchen zu denken, wenn es gibt einen Weg, um die Umleitung von internen und aktualisieren Sie die variable, die WordPress verwendet, um zu bestimmen, welche Seite zu dienen, aber so weit habe ich nicht gedacht, dass alles funktionieren würde.
Gesamte
.htaccess
:Den Sie verwenden möchten, eine URL rewrite
REQUEST_URI
zu bestimmen, der Pfad der Anforderung, die wird nicht durch eine interne Umleitung. Sie können natürlich extern umleiten, aber lassen Sie mich denke, wenn es einen Weg gibt, um es innerlich zu tun.Dies sollte es tun. Es wird umschreiben einer Anfrage zu site.com/category/whatever.html zu site.com/category/whatever. es sollte nicht abhängig sein von der aus die Datei angefordert bestehenden.
Dies ist das format für apache2.conf oder virtual-host-Dateien. Nicht sicher, wenn Sie den Befehl in .htaccess. Es ist am besten für die Pflege in der server-conf, wenn du kannst, denn das ist nur einmal geparsed, auf server starten und htaccess geparst wird auf jede Anfrage.