Diese Frage hat historischen Wert, deshalb aktualisiere ich sie ein wenig. Es ist das Top-Ergebnis für “Webpack-Dev-Server WordPress Redirect” in Google. Während die akzeptierte Lösung für Webpack 2 funktioniert hat, funktioniert sie möglicherweise nicht mehr. Wenn dies nicht der Fall ist, können Sie auf meine verweisen WordPress-Theme-Base-Repositorydas mit Webpack 4 erstellt wurde.
Zuallererst hängt dies damit zusammen, dass WordPress auf localhost statt auf den virtuellen Host umleitet, wenn es von Webpack Dev Server weitergeleitet wird. Ich stehe vor einem ähnlichen Problem, aber die einzige Lösung hat bei mir nicht wirklich etwas gebracht.
Ich verwende WordPress 4.7 in einer Vagrant-Entwicklungsmaschine und es reagiert darauf http://wordpress.local so wie es sein sollte. Zuvor habe ich Browsersync verwendet, um meine Dateien zu überwachen und eine Aktualisierung auszulösen, und dies funktioniert wie erwartet: browser-sync start --proxy 'https://wordpress.local' --files '**/dist/js/*.js, **/*.css, **/*.php'
.
Mit webpack-dev-server kann ich das Verhalten jedoch nicht replizieren. Das sollte passieren.
- Server startet in
https://localhost:9000
- Navigieren zu
https://localhost:9000
sollte mir dieselbe Seite präsentieren, zu der ich navigierehttps://wordpress.local
, ohne Umleitungen. Die Seite funktioniert so wie sie warhttps://wordpress.local
aber die URL isthttps://localhost:9000
. - Änderungen passieren, Seite wird neu geladen.
Stattdessen passiert dies.
- Navigieren zu
https://localhost:9000
Weiterleitungen ich auchhttps://wordpress.local
mit einem 301. Ich habe kanonische Weiterleitungen mit deaktiviertremove_filter('template_redirect', 'redirect_canonical');
hilft aber nicht. - Navigieren zu
https://localhost:9000/404
präsentiert mir eine 404-Seite, die von meinem Theme bereitgestellt wird. Es erfolgt keine Weiterleitung. - Navigieren zu
https://localhost:9000/existing-page/
Weiterleitungen ich auchhttps://localhost/existing-page/
mit 301.
Was zu Hölle ist hier los? Ich habe das Problem auf WordPress eingegrenzt, da das Proxying eines Nicht-WordPress-Verzeichnisses wie erwartet funktioniert:
Direkt, Inhalt von $_SERVER: https://gist.github.com/k1sul1/0aff7ba905464ca7852f2ce00b459922
Proxy, Inhalt von $_SERVER: https://gist.github.com/k1sul1/f090aa103dc3a3cb0b339269560ac19d
Ich habe versucht, mit Headern und dergleichen herumzuspielen, ohne Glück. So sieht meine webpack.config.js aus:
const path = require('path');
const url="https://wordpress.local/";
const themeDir="/wp-content/themes/themename/";
module.exports = {
entry: './src/js/index.js',
output: {
filename: 'bundle.js',
path: path.resolve(__dirname, 'dist'),
publicPath: url
},
devServer: {
historyApiFallback: true,
compress: true,
port: 9000,
https: url.indexOf('https') > -1 ? true : false,
publicPath: themeDir,
proxy: {
'*': {
'target': url,
'secure': false
},
// "https://stackoverflow.com/": { // This doesn't do much.
// target: url,
// secure: false
// }
},
}
};
TL;DR: Wie repliziere ich das Browsersync-Verhalten mit webpack-dev-server, ohne dass WordPress verrückt spielt?
Vielen Dank für den obigen Link zu Ihrem WP-Design mit den aktualisierten Korrekturen, die für mich funktioniert haben! Komisch ist, dass ich damit keine Probleme hatte Umleitung. Wenn ich zu meiner Proxy-URL ging, ging es einfach dorthin. Mein Problem war, dass allen Links auf der Website (dh Navigation) die Portnummer fehlte. Ihre “Header” -Korrektur, um den Zugriff auf WDS-Daten von überall zu ermöglichen, hat dann natürlich meine Probleme gelöst, da ich keine Portnummern habe! Würde mich aber interessieren, warum ich kein Umleitungsproblem hatte…
– Trevor
28. April 2020 um 20:26 Uhr
Ja, die Links bleiben unverändert, wenn Sie die Proxy-Version verwenden. Zuvor habe ich ein wenig JS verwendet
if (module.hot) { fixLinks() }
um das Problem zu mindern, aber ich habe aufgehört, es zu verwenden, um direkt zur WordPress-Site zu gehen. @Trevor– Christian
29. April 2020 um 13:38 Uhr
Es war nicht immer problemfrei, manchmal, wenn ich ein neues Projekt startete, funktionierte das Hot Reload nicht usw., aber ich denke, diese Probleme wurden durch Fehler in Abhängigkeiten verursacht. Im Moment arbeite ich an einer React-Anwendung, die in WordPress eingebettet ist. Hier ist die Konfiguration: gist.github.com/k1sul1/0d8d9e83037fa2ed9c1a974e93035c25 In diesem Fall verwende ich localhost:8080 als meine Entwickler-URL, die auf WordPress verweist. Auf diese Weise kann ich die Assets mit WordPress-Mechanismen in die Warteschlange einreihen und den Webpack-Dev-Server voll ausnutzen.
– Christian
29. April 2020 um 13:44 Uhr