我试图做一个相对简单的设置:
为此,Webpack Dev Server proxies
另一台服务器将传递不知道如何处理的请求。
使用基本的python服务器(有效):
使用Apache服务器:
如果我在浏览器中单独访问http://vhost.name,则会看到正确的HTML。我的环境是默认的Apache服务器版本:Mac OSX El Capitan上的Apache / 2.4.16(Unix)。
package.json
"scripts": {
"test": "node server.js",
"start": "npm run start-dev-server",
"start-dev-server": "webpack-dev-server 'webpack-dev-server/client?/' --host 0.0.0.0 --port 9090 --progress --colors",
"build": "webpack"
},
webpack.config.js
/*global require module __dirname*/
var webpack = require('webpack');
module.exports = {
entry: {
app: [
'webpack-dev-server/client?http://localhost:9090',
'webpack/hot/only-dev-server',
'./src/app.js'
]
},
output: {
path: __dirname + '/dist',
filename: '[name]_bundle.js',
publicPath: 'http://localhost:9090/dist'
},
devServer: {
historyApiFallback: true,
proxy: {
// Python server: works as expected at localhost:9090
// '*': 'http://localhost:5000'
// Apache virtual host: redirects to localhost instead of
// serving localhost:9090
'*': 'http://vhost.name'
}
},
plugins: [
new webpack.HotModuleReplacementPlugin()
]
};
httpd-vhosts.conf
<VirtualHost vhost.name:80>
DocumentRoot "/Path/To/vhost.name"
ServerName vhost.name
<Directory "/Path/To/vhost.name">
Options FollowSymLinks Indexes MultiViews
AllowOverride All
# OSX 10.10 / Apache 2.4
Require all granted
</Directory>
</VirtualHost>
主机
127.0.0.1 localhost
127.0.0.1 vhost.name
WordPress使用规范的URL来帮助规范来自不同来源的内容的URL:
[Y]您无法控制与您链接的人,第三方在键入或复制粘贴您的URL时会出错。规范的URL退化具有传播的方式。也就是说,站点A使用非规范URL链接到您的站点。然后,站点B看到站点A的链接,并将其复制粘贴到他们的博客中。如果您允许将非规范的URL留在地址栏中,则人们会使用它。这种用法对您的搜索引擎排名不利,并且会破坏组成Web站点的链接网络。通过重定向到规范URL,我们可以帮助阻止这些错误的传播,并至少为人们链接到您的博客时可能犯的错误生成301重定向。
尝试代理时,此重写将删除Webpack-dev-server端口号。解决方案是添加您的theme / functions.php:
remove_filter('template_redirect', 'redirect_canonical');
我们显然不希望它在实时站点上运行,因此请根据环境将变量添加到wp_config.php中进行设置:
wp-config.php
// Toggle to disable canonical URLs to allow port numbers.
// Required for Webpack-dev-server proxying.
define('DISABLE_CANONICAL', 'Y', true);
yourtheme / functions.php
// Hack for Webpack dev server
if (DISABLE_CANONICAL == 'Y') {
remove_filter('template_redirect', 'redirect_canonical');
}
我在浏览器“缓存”先前的URL重定向时遇到了问题,因此当您进行更改时,它可能不会立即显示。尝试使用其他浏览器以隐身模式打开URL,或重新启动Webpack和Apache服务器。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句