#vue.js #nginx
#vue.js #nginx
Вопрос:
я настроил свой nginx с помощью этих конфигураций
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location /apps/ {
try_files $uri $uri/ index.php;
}
моим результатом npm run build
i было переименование mv dist apps
первый путь маршрутизатора '/'
будет перенаправлен на path /login
const router = new VueRouter({
mode: 'history',
base: process.env.BASE_URL,
scrollBehavior() {
return { x: 0, y: 0 }
},
routes: [
{
path: '/',
name: 'auth-login',
component: () => import('@/views/pages/authentication/Login.vue'),
meta: {
layout: 'full',
resource: 'Auth',
redirectIfLoggedIn: true,
},
},
]
поэтому, когда я собираюсь www.subdomain.maindomain.id/apps
сделать перенаправление на www.subdomain.maindomain.id/apps/login
но когда я попробовал обновить, появилось сообщение 404. (Файл не найден. )
у меня были попытки с другими
location = /apps/ {
# try_files $uri $uri/ /apps/dist/index.html;
# alias /apps/dist/index.html;
return 301 /apps/dist/index.php;
}
location /apps/dist/ {
try_files $uri $uri/ index.php;
}
location @rewrites {
rewrite ^.*$ /index.html last;
}
тем не менее я получил 404 при обновлении
и это моя полная конфигурация nginx https://gist.github.com/yogithesymbian/b137be9aa2adb87ac7652b9bfbf9394c
если я изменю свой режим на хэш
mode: 'hash',
моя страница может быть обновлена, но должна #
Ответ №1:
Я думаю, что вам нужно перенаправить ‘/ apps / login’ на ‘/ apps’ в nginx.
Для Vue существует только одна страница, которая является корневой страницей (остальные страницы генерируются js). Хотя вы видите /apps/login, /apps/login.html или /apps/login.php на самом деле они не существуют. Другими словами, файл /apps/dist/login.php (в вашем случае nginx запускает:try_files $uri $uri/ index.php ; ) не найден. Следовательно, он возвращает 404.
Лично я не рекомендую использовать историю. Это слишком неуклюже для создания пути перенаправления для этих подобных случаев. Если вы не хотите с этим справляться, используйте режим хэширования и используйте функцию routes в Vue.