<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        Vue項目History模式404問題解決方法

        來源:懂視網 責編:小采 時間:2020-11-27 22:05:35
        文檔

        Vue項目History模式404問題解決方法

        Vue項目History模式404問題解決方法:本文主要解決Vue項目使用History模式發(fā)布到服務器Nginx上刷新頁面404問題。(由于每個項目的情況都不盡相同,本方案已經完美解決本在所使用項目,具體情況可能還需要修改。) 1.項目背景分析 本人是Java后臺開發(fā),Vue其實使用也沒有多久,只能說簡單了解。發(fā)
        推薦度:
        導讀Vue項目History模式404問題解決方法:本文主要解決Vue項目使用History模式發(fā)布到服務器Nginx上刷新頁面404問題。(由于每個項目的情況都不盡相同,本方案已經完美解決本在所使用項目,具體情況可能還需要修改。) 1.項目背景分析 本人是Java后臺開發(fā),Vue其實使用也沒有多久,只能說簡單了解。發(fā)

        本文主要解決Vue項目使用History模式發(fā)布到服務器Nginx上刷新頁面404問題。(由于每個項目的情況都不盡相同,本方案已經完美解決本在所使用項目,具體情況可能還需要修改。)

        1.項目背景分析

        本人是Java后臺開發(fā),Vue其實使用也沒有多久,只能說簡單了解。發(fā)現(xiàn)問題的時候其實也一頭霧水,第一思想就是百度看別人的思路。

        1.1 查看項目打包后文件

        首先看看項目打包后文件內容,看看有沒有什么能突破的地方。文件目錄如下:

        打眼一看可以發(fā)現(xiàn),主要的可能就是這個index.html文件,內容如下:

        <!DOCTYPE html>
        <html lang="en">
        
        <head>
         <meta charset="utf-8">
         <title>系統(tǒng)管理</title>
         <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
         <link rel="shortcut icon" type="image/x-icon" href="logo.png">
        <link rel="shortcut icon" href="logo.png"></head>
        
        <body>
         <div id="app"></div>
        <script type="text/javascript" src="manifest.js?89b5083667173048a500"></script>
         <script type="text/javascript" src="vendor.js?9eae337435ee1b63d5cd"></script>
         <script type="text/javascript" src="index.js?38915745c7ed8b9143db"></script>
        </body>
        
        </html>

        1.在之前百度的時候看到了一個信息,就是引入js文件使用scr的時候,如果前面帶/是絕對路徑,在思考是不是這個問題。

        2.百度的時候大部分信息都是說修改Nginx配置文件。

        2.問題解決

        既然大致思路都有了,那么就開始嘗試去解決一下。

        2.1 更改Vue打包配置文件

        修改webpack.config.js文件,這個是Vue-cli打包文件配置,使其打包后讓index.html文件引用路徑為絕對路徑。webpack.config.js內容如下(每個項目打包配置均不同,這個配置僅僅是我使用的項目):

        const resolve = require('path').resolve
        const webpack = require('webpack')
        const HtmlWebpackPlugin = require('html-webpack-plugin')
        const url = require('url')
        const publicPath = '/'
        
        module.exports = (options = {}) => ({
         entry: {
         vendor: './src/vendor',
         index: './src/main.js'
         },
         output: {
         path: resolve(__dirname, 'dist'),
         filename: options.dev ? '[name].js' : '[name].js?[chunkhash]',
         chunkFilename: '[id].js?[chunkhash]',
         publicPath: options.dev ? '/assets/' : publicPath
         },
         module: {
         rules: [{
         test: /\.vue$/,
         use: ['vue-loader']
         },
         {
         test: /\.js$/,
         use: ['babel-loader'],
         exclude: /node_modules/
         },
         {
         test: /\.css$/,
         use: ['style-loader', 'css-loader', 'postcss-loader']
         },
         {
         test: /\.(png|jpg|jpeg|gif|eot|ttf|woff|woff2|svg|svgz)(\?.+)?$/,
         use: [{
         loader: 'url-loader',
         options: {
         limit: 10000
         }
         }]
         }
         ]
         },
         plugins: [
         new webpack.optimize.CommonsChunkPlugin({
         names: ['vendor', 'manifest']
         }),
         new HtmlWebpackPlugin({
         template: 'src/index.html',
         favicon: 'src/logo.png' 
         })
         ],
         resolve: {
         alias: {
         '~': resolve(__dirname, 'src')
         },
         extensions: ['.js', '.vue', '.json', '.css']
         },
         devServer: {
         host: '127.0.0.1',
         port: 8010,
         proxy: {
         '/api/': {
         target: 'http://127.0.0.1:8080',
         changeOrigin: true,
         pathRewrite: {
         '^/api': ''
         }
         }
         },
         historyApiFallback: {
         index: url.parse(options.dev ? '/assets/' : publicPath).pathname
         }
         },
         devtool: options.dev ? '#eval-source-map' : '#source-map'
        })

        再次打包后,查看index.html,內容如下:

        <!DOCTYPE html>
        <html lang="en">
        
        <head>
         <meta charset="utf-8">
         <title>系統(tǒng)管理</title>
         <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
         <link rel="shortcut icon" type="image/x-icon" href="logo.png">
        <link rel="shortcut icon" href="/logo.png"></head>
        
        <body>
         <div id="app"></div>
        <script type="text/javascript" src="https://www.gxlcms.com/manifest.js?f7d4b2121bc37e262877"></script><script type="text/javascript" src="https://www.gxlcms.com/vendor.js?9eae337435ee1b63d5cd"></script><script type="text/javascript" src="https://www.gxlcms.com/index.js?51954197166dd938b54e"></script></body>
        
        </html>

        從index.html可以看出已經變成了絕對路徑。

        2.2 修改Nginx配置

        修改nginx.conf配置文件,代碼如下:

        worker_processes 1;
        
        events {
         worker_connections 1024;
        }
        
        http {
         include mime.types;
         default_type application/octet-stream;
        
         sendfile on;
        
         keepalive_timeout 65;
        
         server {
         listen 80;
         server_name localhost;
         ## 指向vue打包后文件位置
         root /opt/nginx/dist/;
        
         ## 攔截根請求,例如http://localhost
         location / {
         try_files $uri $uri/ /index.html;
         }
        
         ## 攔截帶有tms-monitor的請求,例如http://localhost/tms-monitor/admin
         location ^~/tms-monitor{
         if (!-e $request_filename) {
         rewrite ^/(.*) /index.html last;
         break;
         }
         }
        
         #error_page 500 502 503 504 /50x.html;
         location = /50x.html {
         root html;
         }
        
         }
        }

        3.總結

        上述配置完成后,打包Vue項目,重啟Nginx再次刷新就不會在有404的現(xiàn)象了。(再次申明:以上只是針對本人所在的項目,不一定使用所有情況。)

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        Vue項目History模式404問題解決方法

        Vue項目History模式404問題解決方法:本文主要解決Vue項目使用History模式發(fā)布到服務器Nginx上刷新頁面404問題。(由于每個項目的情況都不盡相同,本方案已經完美解決本在所使用項目,具體情況可能還需要修改。) 1.項目背景分析 本人是Java后臺開發(fā),Vue其實使用也沒有多久,只能說簡單了解。發(fā)
        推薦度:
        標簽: 模式 方法 VUE
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 日本亚洲视频在线| 四虎永久在线精品免费观看地址| 超清首页国产亚洲丝袜| 亚洲精品无码成人片久久不卡| 美女网站免费福利视频| 亚洲一区精品视频在线| 亚洲日韩激情无码一区| 一级毛片人与动免费观看| 亚洲午夜爱爱香蕉片| 韩国免费a级作爱片无码| 曰批全过程免费视频播放网站| 国产免费无遮挡精品视频| 午夜亚洲乱码伦小说区69堂| 最近中文字幕国语免费完整| 亚洲天堂中文字幕在线观看| 最近的免费中文字幕视频| 色婷婷亚洲一区二区三区| heyzo亚洲精品日韩| 亚洲人成77777在线观看网| 女人毛片a级大学毛片免费| 苍井空亚洲精品AA片在线播放| 亚洲成年人啊啊aa在线观看| 拍拍拍无挡免费视频网站| 久久精品国产亚洲av四虎| 和日本免费不卡在线v| 亚洲av无码专区在线电影| 国产综合亚洲专区在线| 香港a毛片免费观看 | 久久电影网午夜鲁丝片免费| 亚洲色偷偷色噜噜狠狠99| 亚洲一区无码精品色| 99久久精品免费精品国产| 亚洲gay片在线gv网站| 免费精品国偷自产在线在线| 亚洲av综合av一区二区三区| 国产日产亚洲系列| 国拍在线精品视频免费观看| 人人爽人人爽人人片av免费| 亚洲美女激情视频| 免费A级毛片在线播放不收费| 成全高清在线观看免费|