<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
        主站蜘蛛池模板: 国产性爱在线观看亚洲黄色一级片 | 国产国拍亚洲精品福利| 在线观看亚洲精品专区| 免费观看四虎精品国产永久| 黄色大片免费网站| 亚洲午夜日韩高清一区| 99热在线日韩精品免费| 精品国产_亚洲人成在线高清| 日本一区午夜艳熟免费| 亚洲激情在线视频| 99爱在线精品免费观看| 亚洲欧洲av综合色无码| 亚洲成A∨人片天堂网无码| 国产一级高青免费| 亚洲日本在线播放| 国内外成人免费视频| 男女交性无遮挡免费视频| 亚洲人成网站在线观看播放| 在线观看免费av网站| 亚洲AV香蕉一区区二区三区| 亚洲色婷婷综合开心网| 91老湿机福利免费体验| 亚洲欧美熟妇综合久久久久| 亚洲毛片网址在线观看中文字幕 | 亚洲夂夂婷婷色拍WW47| 亚洲AV无码乱码在线观看性色扶 | 免费精品视频在线| 亚洲精品自产拍在线观看| 91免费人成网站在线观看18| 亚洲丁香婷婷综合久久| 色噜噜AV亚洲色一区二区| 国产成人精品免费视频网页大全| 亚洲日韩在线中文字幕综合| 亚洲熟妇av一区二区三区| 日韩免费a级毛片无码a∨| 一级做受视频免费是看美女| 亚洲综合图片小说区热久久| 亚洲国产成人久久一区久久| 在线免费观看亚洲| 丰满妇女做a级毛片免费观看| 久久精品国产亚洲AV大全|