Я создаю простую контактную форму и обрабатываю бэкэнд с помощью nodejs и express.Я реализовал свою форму, используя соответствующее действие ('/ contact'), и реализовал маршрут под углом.Всякий раз, когда я отправляю свою форму, я получаю сообщение об ошибке:
The requested URL /contact was not found on this server.
index.js:
// POST route from contact form
app.post('/contact', function (req, res) {
let mailOpts, smtpTrans;
smtpTrans = nodemailer.createTransport({
host: 'smtp.gmail.com',
port: 465,
secure: true,
auth: {
user: GMAIL_USER,
pass: GMAIL_PASS
}
});
mailOpts = {
from: req.body.name + ' <' + req.body.email + '>',
to: GMAIL_USER,
subject: 'New message from contact form at tylerkrys.ca',
text: `${req.body.name} (${req.body.email}) says: ${req.body.message}`
};
smtpTrans.sendMail(mailOpts, function (error, response) {
if (error) {
res.render('contact-failure');
}
else {
res.render('contact-success');
}
});
});
index.html:
<form action="/contact" id="contact-form" method="post" role="form">
<h2 class="text-center">Contact us</h2>
<div class="form-group"><input class="form-control" type="text" id="name" name="name" placeholder="Name" required="required"></div>
<div class="form-group"><input class="form-control is-invalid" type="email" id="email" name="email" placeholder="Email" required="required"><small class="form-text text-danger">Please enter a correct email address.</small></div>
<div class="form-group"><textarea class="form-control" rows="14" id="message" name="message" placeholder="Message" required="required"></textarea></div>
<div class="form-group"><button class="btn btn-primary" type="submit">Send </button></div>
</form>
Я работаю насервер APACHE, использующий Debian 4.9.88.Я просмотрел другие посты, связанные с этой проблемой, и попытался реализовать следующий файл .htaccess в моем / public_html / корневом каталоге:
1 <IfModule mod_rewrite.c>
2 RewriteEngine On
3 RewriteBase /
4 RewriteRule ^index\.html$ - [L]
5 RewriteCond %{REQUEST_FILENAME} !-f
6 RewriteCond %{REQUEST_FILENAME} !-d
7 RewriteRule . /index.html [L]
8 </IfModule>`
Однако это не решило проблему.Это также из-за моего непонимания, как именно работают маршруты (я читаю угловую документацию, но все еще не могу понять, почему путь / contact не найден).
ОБНОВЛЕНИЕ: очевидно, мне нужно было изменитьПосле изменения моего файла .htaccess в настройке apache для «AllowOverride All» я не получаю ошибку 404, но фактический маршрут еще не запускается.Я просто перенаправлен на мою страницу index.html: "www.SITE.com/contact". Любая помощь по этому вопросу будет принята с благодарностью.