Vue路由器历史记录模式在生产中不起作用

时间:2018-12-20 16:17:53

标签: 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>

因为我是初学者,所以我必须错过一些东西,知道吗?

谢谢您的帮助!

1 个答案:

答案 0 :(得分:0)

在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>