В общем решение такое:
1. Когда первый раз загружаешь приложение, то оно грузится с сервера. И данные по всем урлам берутся с сервера. В дальнейшем всё берётся с клиента.
2. Такой код рабочий:
TechnologyPage.getInitialProps = async ({store, req, query}) => {
try {
let response = null;
if (process.browser) {
response = await axios.get(`${window.location.protocol}/api/getTechnologySections`, {params: {technology: query.technology}});
} else {
response = await axios.get(`${req.protocol}://${req.get('Host')}/api/getTechnologySections`, {params: {technology: query.technology}});
}
store.dispatch({type: 'getTechnologySections', payload: response.data});
} catch (error) {
console.log(error);
}
};
Так надо делать в каждом компоненте.