mod-rewrite - 如何直接访问 Vue 路由
问题描述
我正在创建我的第一个Vue.js应用程序。
我想在我的 Vue 路由器中使用历史模式,所以我不必使用 hashbang URL,例如localhost:8080/#/login
.
所以,我像这样将模式设置为历史,这很有效:
export default new Router({
mode: 'history',
routes: [...]
})
我的路线现在显示为localhost:8080/login
. 但是,我无法使用此 URL 直接访问登录页面,因为当我刷新当前页面或尝试直接在浏览器的地址栏中键入该路由并按 Enter 时,我收到以下错误:
无法获取/登录
根据Vue 文档,我应该配置我的服务器以允许这样做。他们建议,对于我的设置,配置 Apache 并使用mod_rewrite
.
因此,我创建了一个.htaccess
包含以下mod_rewrite
声明的文件:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]
</IfModule>
但是当我尝试localhost:8080/login
直接加载时,我得到了同样的错误。
我错过了什么吗?有人可以帮我解决这个问题吗?
我的应用程序的目录结构如下所示:
解决方案
.htaccess 文件是 Apache 网络服务器的配置文件。localhost:8080
是一个开发服务器,不是由 Apache 运行的,所以该.htaccess
文件不在那里使用。
开发服务器应该自动获取 url。如果没有,最可能的罪魁祸首是未正确设置的基本 url 或公共路径,或设置为生产变体。例如,如果您将其设置为/app/
,则您必须访问localhost:8080/app/login
才能访问您的登录页面。由于NODE_ENV
设置了环境变量,您可以/
为开发服务器设置公共路径,同时仍为生产构建保留自定义公共路径。
推荐阅读
- javascript - 在数据表中添加输入
- snowflake-cloud-data-platform - 雪花中的消费者账户收费
- android - 如何使用 ActivityResultContracts.CreateDocument() 添加意图类型
- python - Pyinstaller:无法在 pyi-makespec 中正确添加二进制文件和数据
- javascript - 如何在 Typescript 中导出和导入类方法?
- powershell - 如何在powershell中将第一个单词更改为黄色而不是白色?
- swift - 检测 USB 连接的问题 - 使用 Swift 代码断开 macOS
- flutter - 请帮助我收到此错误,“状态错误:DocumentSnapshotPlatform 中不存在字段”
- composer-php - 如何找到 composer.phar 文件在哪里
- node.js - 检查用户是否通过 Express.js 和 Firestore 登录