当前位置: 首页 > 知识库问答 >
问题:

vue路由器、nginx和直接链路

双俊人
2023-03-14

我正在尝试在我的nginx服务器上设置vue路由器。我遇到的问题是,如果我直接在浏览器myapp.com/mypath中输入url,我的路线就不起作用。

我尝试了vue路由器文档中描述的服务器配置,以及建议的堆栈溢出类似配置。我当前的nginx位置配置如下:

location / {
    try_files $uri $uri/ /index.html;
}

location /subscribe {
    proxy_pass http://127.0.0.1/subscribe // express API app
}

所做的就是将任何路径重定向到我的根组件(path:/),而不是/mypath。这确实有意义,并且位置似乎只重定向到索引文件。我如何重定向直接链接的myapp.com/mypath/mypath路由在我的VueJS应用程序?

以下是我的vue路由现在的设置方式:

...
const routes = [
    { path: '/', component: Landing },
    { path: '/mypath', component: MyPath }
];

const router = new VueRouter({ mode: 'history', routes });

new Vue({
    el: '#app',
    router,
    render: h => h(App)
});

共有3个答案

归翔
2023-03-14

>

  • 得: /etc/nginx/sites-enabled

    打开域的配置文件

    在“root”下添加以下代码

    location / {
      try_files $uri $uri/ /index.html;
    }
    

    保存文件

    使用以下命令重新启动nginx服务器:/etc/init.d/nginx restart

    刷新浏览器

  • 单于正业
    2023-03-14

    根据一位同事的建议,我找到了一个可能的解决方案。

    我现在在nginx中将URI作为查询参数传递。现在我的配置是:

    location / {
        try_files $uri $uri/ /index.html?uri=$uri
    }
    

    然后在VueJS中的路由器配置中:

    const routes = [
    {
        path: '/',
        component: Landing,
        beforeEnter: (to, from, next) => {
            const { uri } = to.query;
            if (uri != null && uri != '/') {
                next(false);
                router.push(uri);
            } else {
                next();
            }
        }
    }, ...
    

    这似乎起到了作用,尽管看起来有点狡猾。

    佘单鹗
    2023-03-14

    我为解决同一个问题挣扎了好几个小时。在所有这些配置对我起作用之后:

    events {
    ...
      http {
      ...
        server {
              listen       80;
              server_name  localhost;
    
              location / {
                  root   /path/to/your/project/html;
                  index  index.html index.htm;
                  include  /etc/nginx/mime.types;
                  try_files $uri $uri/ /index.html;
              }
        }
      }
    }
    

    我的路由器设置几乎和你一样。

     类似资料:
    • 如果安装vuejs eslint插件并将其配置为使用“强烈推荐”规则集,linter将告诉您更改以下代码: 进入这个 问题是,当您这样做时,您的

    • 问题内容: 我有一个连接到的前端,并且在端用定义了路由。当我用来将它们定向到动态路线时,它们可以正常工作。但是当我直接使用浏览器地址栏访问按Enter的链接时,或者我刷新了。 404页面不存在 而且我知道那是因为发生了对服务器的直接调用,并且当我们在共享主机上进行操作时,没有必要操纵共享主机上的操作。 考虑过但不适合API的动态特性。请允许我提供解决此问题的任何方法吗? 问题答案: 检查一下:ht

    • 我需要你的帮助。有一个Vue应用程序,我使用vuex商店和Vue路由器。问题是,我从API调用中获取存储数据,如果我从其他地方导航到页面,用户数据已经存储在存储中,并且在组件中,我可以使用getter接收到的数据。但是,如果我在create或mount方法中重新加载页面,则getter不包含任何数据。但如果在Vuex开发工具中查看,我可以看到fetchedd数据。如何修复此行为?

    • 我正在使用React路由器与链接,以改变URL和导航通过应用程序。在阅读列表中,我使用以下代码导航用户阅读edit: 我定义了以下路由: 我怎样才能解决那个问题?

    • 问题内容: 我使用ReactJs开发了有关PWA(渐进式Web应用程序)的PoC,以展示如何使用Browser API中的相机,地理位置,麦克风,光传感器等。 我已经为该Web应用程序中的每个功能创建了一条路由,并且在localhost中一切正常。但是,当我在 Azure Wep App Linux服务 上部署我的react应用的npm build版本时,它无法正常工作。我可以访问主页(index

    • 我有一个使用vue创建的单页应用程序,导航链接都是使用标记完成的。导航中有几个项目我的老板想在导航中使用,但禁用了,这样人们就可以看到一些即将推出的功能。然而,我不知道如何完全禁用路由器链接! 不执行任何操作,不执行任何操作(我尝试将其发送到一个函数,看看这是否会阻止单击,但它只是调用函数并路由,尽管存在阻止),添加一个