vue.js - Vue-router 历史模式在生产中不起作用

标签 vue.js vue-router

我是 vue 的新手,我遇到了 vue 路由器的问题。我正在使用 Vue CLI 3。 历史模式在本地服务器上运行良好,但在生产模式下刷新时显示 404

我知道这是一个常见问题,所以我遵循了 Vue Router 的文档。所以我把这段代码放在项目根目录下的.htaccess文件里,但是好像不行

 <IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteRule ^index\.html$ - [L]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule . /index.html [L]
 </IfModule>

因为我是初学者,所以我一定会错过一些东西,有什么想法吗?

感谢您的帮助!

最佳答案

在 Google Cloud Compute 上,运行 Debian 并通过 Apache 提供服务。

这很痛苦,因为 mod_rewrite 根本不起作用。事实证明,问题似乎出在产品中的 Apache(尤其是如果您自己动手),默认设置会影响您。

/etc/apache2/apache2.conf 中的以下规则为例:

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

因此,/var/www/http 下的文件,这意味着任何 .htaccess 重写规则不会被允许。幸运的是,一旦我们知道这一点,我们就可以启用重写:

<Directory /var/www/html>
        AllowOverride All
</Directory>

.htaccess 重写规则(通过 mod_rewrite)现在将按预期应用:

<IfModule mod_rewrite.c>

  RewriteEngine On
  RewriteBase /
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d    
  RewriteRule . /index.html [L]

</IfModule>

关于vue.js - Vue-router 历史模式在生产中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53872364/

相关文章:

javascript - 使用 JavaScript 在搜索栏中的词序

javascript - Firebase Auth 和 Vue-router

vue.js - @vue/test-utils 未知的自定义元素 : <router-view>

scope - Vue 组件未在路由器 View 中呈现

css - 为什么 SVG textPath 不渲染? [开发工具中的 0x0]

html - 粘性导航栏显示在所有 View 中

vue.js - 视觉 : is multiple Vue apps for a single website okay?

vue.js - NUXT 中的 SSR vuex store

javascript - Vue Router 中的语言作为参数

vue.js - 从 vue2 中别名的 URL 获取 id