Cześć. Dziękuję, że poświęcacie mi swój czas. Uczę się SEO pod aplikacje w React + Express. Przerzuciłem moją stronę przez jeden z seo checkerów ( www.woorank.com ) i naprawiam błędy i niedociągnięcia, które ta aplikacja znalazła w moim kodzie pod względem SEO. Utknąłem na:
Próbowałem na różne sposoby zrobić to co jest tam napisane. Wstawiłem canonicala do index.html strony głównej:
Próbowałem też na różne sposoby zrobić redirect 301, ale nie udaje mi się. Próbowałem np tak:
app.use((req, res, next) => {
var host = req.get('Host');
if (host === 'http://www.mitroinc.pl') {
return res.redirect(301, 'http://mitroinc.pl/' + req.originalUrl);
}
return next();
});
Słabo znam się na backendzie. Zrozumiałem to tak, że niezależnie czy wpiszę www.strona.pl, czy samo strona.pl, czy http://strona.pl, czy może https, to zawsze ma mnie kierować na jeden url, np strona.pl i to właśnie próbowałem zrobić. Powiedzcie mi proszę, czy dobrze zrozumiałem o co chodzi i jak ogarnąć ten redirect. Frontend jest zrobiony w Reakcie i jest przerzucony przez Gatsby właśnie na potrzeby SEO. Nie ma żadnych podstron, jest tylko homepage i 404. Strona aktualnie jest hostowana na MyDevil. Plik server.js bez żadnych moich prób z redirectami wygląda tak:
const express = require("express");
const cors = require("cors");
const path = require("path");
const sendMail = require("./mail");
const { log } = console;
const app = express();
const compression = require("compression");
app.use(compression());
app.use(cors());
// Data parsing
app.use(
express.urlencoded({
extended: false,
})
);
app.use(express.json());
// Nodemailer
app.put("/email", (req, res) => {
const { subject, email, text } = req.body;
log("Data: ", req.body);
sendMail(email, subject, text, function (err, data) {
if (err) {
log("ERROR: ", err);
return res.status(500).json({ message: err.message || "Internal Error" });
}
log("Email sent!!!");
return res.json({ message: "Email sent!!!!!" });
});
});
app.use(express.static("client"));
app.get("/", (req, res) => {
res.sendFile(path.resolve(__dirname, "client", "index.html"));
});
app.get("*", (req, res) => {
res.status(404);
res.sendFile(path.resolve(__dirname, "client", "404", "index.html"));
});
const port = 12476;
app.listen(port, () => console.log(`Server started on port ${port}`));