在server.js中获取301重定向数据(Express / NextJS)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在server.js中获取301重定向数据(Express / NextJS)相关的知识,希望对你有一定的参考价值。
我正在使用express和next js开发一个项目,我找到了一个很好的例子,说明如何在server.js文件中为重定向设置数据数组。但是,如果有可能,我想在WordPress中构建一个插件,允许用户提交重定向数据,以便可以由没有技术知识的人管理。我的问题是,是否有可能在我的server.js文件中获取数据以替换此示例中的数据?
const express = require('express')
const next = require('next')
const { join } = require('path')
const dev = process.env.NODE_ENV !== 'production'
const app = next({ dev })
const handle = app.getRequestHandler()
//This is the data I want to fetch through the WP Rest API
const redirects = [
{ from: '/old-link-1', to: '/new-link-1' },
{ from: '/old-link-2', to: 'https://externalsite.com/new-link-2' },
]
app.prepare().then(() => {
const server = express()
redirects.forEach(({ from, to, type = 301, method = 'get' }) => {
server[method](from, (req, res) => {
res.redirect(type, to)
})
})
server.get('*', (req, res) => {
return handle(req, res)
})
server.listen(3000, err => {
if (err) throw err
console.log('> Ready on http://localhost:3000')
})
})
是的,我相信可以做那样的事情。
该库允许您在express:https://github.com/request/request中发出API请求
执行如下:
var request = require('request');
request('http://www.google.com', function (error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body) // Print the google web page.
}
})
下一步是在wordpress中创建一个端点,其中包含您要创建的所有301:
function my_custom_endpoint(){
return 'Hey look, its some data';
}
// Register the rest route here.
add_action( 'rest_api_init', function () {
register_rest_route( 'yournamespace/v1', 'my_custom_endpoint',array(
'methods' => 'GET',
'callback' => 'my_custom_endpoint'
));
});
祝你好运,编码愉快!
所以,只是因为其他人偶然发现了以编程方式添加源自WordPress安装的重定向的问题,这就是它可以做到的。我的技术堆栈是React,Next.js,Express服务器从生活在Web中其他地方的WordPress安装中提取数据。
WordPress的:
1)创建一个空白的WordPress插件(谷歌是你的朋友)
2)在插件中创建一个激活挂钩来创建一个数据库(同样,Google为每个条目添加'to_url'和'from_url'。
3)在插件中注册Rest路径(如上所述,Tanner的答案)
- 此Rest Route应该从数据库中提取您的信息并以此格式将其作为数组返回: [{'from':'/ about','to':'/ about-us'},{'from':'/ test3','to':'/ banks / testing-page'},]
4)创建一个插件管理页面,其中包含允许用户向该数据库添加条目的表单。随着您的数据库的增长,您对其余API的响应将会增长,您的重定向将无缝地包含在您的项目中。
5)在您的React server.js中,您将需要以下设置
const request = require("request");
let redirects;
request('https://yourwebsite.com/wp-json/YOUR-ROUTE/v2/redirects', function (error, response, body) {
if (!error && response.statusCode == 200) {
redirects = JSON.parse(body);
}
})
redirects.forEach(({ from, to, type = 301, method = 'get' }) => {
server[method](from, (req, res) => {
res.redirect(type, to)
})
});
注意事项:确保当你使用php中的表单操作数据时,你正在采取适当的预防措施来消毒和逃避一切。
以上是关于在server.js中获取301重定向数据(Express / NextJS)的主要内容,如果未能解决你的问题,请参考以下文章