因此,我有一个Vue应用程序,用于安装在apache dev服务器上的客户端.我这样做是为了适应生产环境.该应用程序位于一个子目录中,我在vue路由上设置了"base"选项以匹配.如果我导航到虚拟主机根目录,它会正确重定向,但是通过在中键入地址来导航到同一地址会得到404.

这是我的路由代码:

const routes = [
  {path: '/', redirect: '/london' },
  {path: '/:city', component: homeView}
]

const router = new VueRouter ({
  mode: 'history',
  routes,
  base: '/subdir/'
})

我还有相关的Apache."子目录"中的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>

因此,如果我导航到"cityapp.local/subdir",它会重定向到"cityapp.local/subdir/london",但如果我键入"cityapp.local/subdir/london",我会看到apache 404页面.

任何 idea 或帮助都将不胜感激!

编辑:如果我将虚拟主机设置为包含subdir,并从路由中删除base选项,则一切正常.然而,我不能在生产中这样做,所以我希望这些信息能有所帮助.

推荐答案

天啊,昨天和今天,我一直在寻找解决这个问题的方法,结果发现答案是:Vue help forum: Vue webpack project path change

我找到的任何其他人的相关代码:

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

我昨天真的试过类似的东西.我把RewriteBase改成了subdir,但没有改变重写规则!我不擅长.HTS资料:(

Vue.js相关问答推荐

VueUse onClickOutside不支持右键单击

在 Vue 中更改 json 数据后,如何在屏幕上重新呈现表格组件?

我在表格中创建了一个包含信息的新行,但在 Cypress e2e 测试中我无法获得最后一行(新行)

使用计算(computed)属性更改视图

使用 vue / nuxt js 切换 fontawesome 图标

我可以从手表调用方法并安装吗?

是否可以在没有 Vue 的情况下使用 Vuex?

Bootstrap-vue b-table,标题中带有过滤器

VueJS 将 HTML 打印到页面

VueJS + VueRouter:有条件地禁用路由

JavaScript/VueJS:判断数组是否包含具有特定值元素的对象

Vue.js 无法切换字体真棒图标

Vuex:无法读取未定义的属性'$store'

过渡后的 v-if 下方的过渡元素

将 ref 的内容从子组件传递到另一个 VueJS 子组件

Vue 3 – 渲染无法动画的非元素根 node

如何在 Vue 数据对象中运行函数?

在 Vuex 模块中进行继承的方法

Vue - 重用方法的最佳方式

超过最大调用堆栈大小 Vuetify