apache如何配置“找不到资源时”返回某个文件?

想做一个服务端渲染的页面,后台就只需提供数据即可,前端使用vue制作单页面(比较简单的页面,只使用<script></script>引入vue.js,没有使用前端路由)。
当直接直接输入地址访问时,前端根据url展示相应的页面并通过ajax获取数据填充,但访问的路径在后端是不存在的,vue的官网上说的HTML5 History 模式中介绍:

不过这种模式要玩好,还需要后台配置支持。因为我们的应用是个单页客户端应用,如果后台没有正确的配置,当用户在浏览器直接访问 http://oursite.com/user/id 就会返回 404,这就不好看了。

所以呢,你要在服务端增加一个覆盖所有情况的候选资源:如果 URL 匹配不到任何静态资源,则应该返回同一个 index.html 页面,这个页面就是你 app 依赖的页面。

并给出了apache后端配置:

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

不知道这段代码怎么用,我的环境是phpStudy(wmap),这段代码我试过添加在.htaccess中放在项目目录下(无效),添加在apache目录下httpd.conf(apache无法启动),又网上找了404自定义页面代码ErrorDocument 404 /404.html,添加后404页面多出一条

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.

放了一个404.html和.htaccess同级,还是404错误,查了半天自己就是不会用,希望能指出我哪里思路或做法有问题。

阅读 2.2k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进