diff --git a/src/main/resources/static/custom/module/admin.js b/src/main/resources/static/custom/module/admin.js
index e6ad642..e15cfdf 100755
--- a/src/main/resources/static/custom/module/admin.js
+++ b/src/main/resources/static/custom/module/admin.js
@@ -1,6 +1,7 @@
 layui.define(['layer'], function (exports) {
     var layer = layui.layer;
     var popupRightIndex, popupCenterIndex, popupCenterParam;
+    var baseUrl = window.location.pathname;
 
     var admin = {
         isRefresh: false,
@@ -228,6 +229,19 @@
                 default:
                     return str;
             }
+        },
+        errorBack: function (err) {
+            layer.closeAll('loading');
+            if (403 == err.status) {
+                layer.msg("无资源权限！", {icon: 2, time: 1500});
+                return;
+            }
+            if (200 == err.status) {
+                layer.msg("请求异常，请刷新页面重新操作", {icon: 2, time: 1500});
+                return;
+            } else {
+                layer.msg("请求服务器失败！", {icon: 2});
+            }
         }
     };
 
@@ -248,7 +262,7 @@
         },
         // 设置主题
         theme: function () {
-            admin.popupRight('home/theme');
+            admin.popupRight(baseUrl+'home/theme');
         },
         // 全屏
         fullScreen: function (e) {
@@ -311,10 +325,10 @@
                     btn: ['确定', '取消']
                 }, function (index, layero) {
                     layer.closeAll('dialog');  //加入这个信息点击确定 会关闭这个消息框
-                    admin.dgo("/dictrefresh", {}, function (data) {
+                    admin.dgo(baseUrl+"dictrefresh", {}, function (data) {
                         if (data.code == 200) {
                             layer.msg("刷新数据字典成功！", {icon: 1, time: 1000});
-                            DictPoolToolkit().initAll("/dictpool");
+                            DictPoolToolkit().initAll(baseUrl+"dictpool");
                         } else if (data.code == 401) {
                             layer.msg(data.msg, {icon: 2, time: 1500}, function () {
                                 location.replace('/login');
diff --git a/src/main/resources/static/custom/module/index.js b/src/main/resources/static/custom/module/index.js
index 101d6b9..df14f67 100755
--- a/src/main/resources/static/custom/module/index.js
+++ b/src/main/resources/static/custom/module/index.js
@@ -2,6 +2,7 @@
     var admin = layui.admin;
     var layer = layui.layer;
     var element = layui.element;
+    var baseUrl = window.location.pathname;
 
     var index = {
         pageTabs: true,  // 是否开启多标签
@@ -14,6 +15,12 @@
                 if ('javascript:;' != menuPath && '' != menuPath) {
                     var key = menuPath.replace(/[?:=&/]/g, '_');
                     $(this).attr('href', '#!' + key);
+                    if (menuPath.startsWith("/")) {
+                        menuPath = baseUrl + menuPath.substring(1);
+                    } else {
+                        menuPath = baseUrl + menuPath;
+                    }
+                    console.log(menuPath);
                     Q.reg(key, function () {
                         index.loadView({
                             menuId: key,
@@ -28,7 +35,7 @@
 
             // 主页
             Q.init({
-                index: '!_home_console'
+                index: '_home_console'
             });
             // tab选项卡切换监听
             element.on('tab(admin-pagetabs)', function (data) {
@@ -134,7 +141,7 @@
             // 退出登录点击事件
             $('#btnLogout').click(function () {
                 layer.confirm('确定退出登录？', function () {
-                    location.replace('logout');
+                    location.replace(baseUrl+'logout');
                 });
             });
         }
diff --git a/src/main/resources/templates/home/console.html b/src/main/resources/templates/home/console.html
index 027897c..94a54a5 100755
--- a/src/main/resources/templates/home/console.html
+++ b/src/main/resources/templates/home/console.html
@@ -55,7 +55,7 @@
         var element = layui.element;
         var device = layui.device;
 
-        layui.link('/static/custom/css/console.css');
+        layui.link('[[@{/static/custom/css/console.css}]]');
 
         // 渲染轮播
         carousel.render({
diff --git a/src/main/resources/templates/index.html b/src/main/resources/templates/index.html
index b5099b3..1fb326d 100755
--- a/src/main/resources/templates/index.html
+++ b/src/main/resources/templates/index.html
@@ -50,7 +50,7 @@
                     <dd ay-unselect><a lay-href="/operator/userinfor">基本资料</a></dd>
                     <dd ay-unselect><a lay-href="/operator/setpwd">修改密码</a></dd>
                     <hr>
-                    <dd layadmin-event="logout" style="text-align: center;" ><a href="/logout">退出</a></dd>
+                    <dd layadmin-event="logout" style="text-align: center;" ><a th:href="@{/logout}">退出</a></dd>
                 </dl>
             </li>
             <li class="layui-nav-item" lay-unselect>
diff --git a/src/main/resources/templates/login.html b/src/main/resources/templates/login.html
index 0cef69e..d5d6c7b 100644
--- a/src/main/resources/templates/login.html
+++ b/src/main/resources/templates/login.html
@@ -93,7 +93,7 @@
             var field = obj.field;
             layer.load(2);
             $.ajax({
-                url: '/login/form',
+                url: '[[@{/login/form}]]',
                 data: field,
                 type: 'POST',
                 success: function (data) {
diff --git a/src/main/resources/templates/system/function/form.html b/src/main/resources/templates/system/function/form.html
index fa382a5..e1468be 100755
--- a/src/main/resources/templates/system/function/form.html
+++ b/src/main/resources/templates/system/function/form.html
@@ -98,7 +98,7 @@
                         admin.finishPopupCenter();
                     } else if (result.code == 401) {
                         layer.msg(result.msg, {icon: 2, time: 1500}, function () {
-                            location.replace('/login');
+                            location.replace('[[@{/login}]]');
                         }, 1000);
                         return;
                     } else {
diff --git a/src/main/resources/templates/system/function/index.html b/src/main/resources/templates/system/function/index.html
index 650ec8b..93d53ac 100755
--- a/src/main/resources/templates/system/function/index.html
+++ b/src/main/resources/templates/system/function/index.html
@@ -156,7 +156,7 @@
                         layer.msg(data.msg, {icon: 1});
                     } else if (data.code == 401) {
                         layer.msg(data.msg, {icon: 2, time: 1500}, function () {
-                            location.replace('/login');
+                            location.replace('[[@{/login}]]');
                         }, 1000);
                         return;
                     }
diff --git a/src/main/resources/templates/system/function/resform.html b/src/main/resources/templates/system/function/resform.html
index 1d83363..4ac8b98 100755
--- a/src/main/resources/templates/system/function/resform.html
+++ b/src/main/resources/templates/system/function/resform.html
@@ -75,7 +75,7 @@
                         admin.finishPopupCenter();
                     } else if (result.code == 401) {
                         layer.msg(result.msg, {icon: 2, time: 1500}, function () {
-                            location.replace('/login');
+                            location.replace('[[@{/login}]]');
                         }, 1000);
                         return;
                     } else {
diff --git a/src/main/resources/templates/system/function/reslist.html b/src/main/resources/templates/system/function/reslist.html
index e7241f6..63ba042 100755
--- a/src/main/resources/templates/system/function/reslist.html
+++ b/src/main/resources/templates/system/function/reslist.html
@@ -71,7 +71,7 @@
                         layer.msg(data.msg, {icon: 1});
                     } else if (data.code == 401) {
                         layer.msg(data.msg, {icon: 2, time: 1500}, function () {
-                            location.replace('/login');
+                            location.replace('[[@{/login}]]');
                         }, 1000);
                         return;
                     }
diff --git a/src/main/resources/templates/system/function/subform.html b/src/main/resources/templates/system/function/subform.html
index a687f33..f04a15e 100755
--- a/src/main/resources/templates/system/function/subform.html
+++ b/src/main/resources/templates/system/function/subform.html
@@ -87,7 +87,7 @@
                         admin.finishPopupCenter();
                     } else if (result.code == 401) {
                         layer.msg(result.msg, {icon: 2, time: 1500}, function () {
-                            location.replace('/login');
+                            location.replace('[[@{/login}]]');
                         }, 1000);
                         return;
                     } else {
diff --git a/src/main/resources/templates/system/operator/index.html b/src/main/resources/templates/system/operator/index.html
index 8608ac5..6cbcf98 100644
--- a/src/main/resources/templates/system/operator/index.html
+++ b/src/main/resources/templates/system/operator/index.html
@@ -130,7 +130,7 @@
                         showEditModel(data);
                     } else if (ret.code == 401) {
                         layer.msg(ret.msg, {icon: 2, time: 1500}, function () {
-                            location.replace('/login');
+                            location.replace('[[@{/login}]]');
                         }, 1000);
                         return;
                     }
@@ -156,7 +156,7 @@
                             layer.msg(ret.msg, {icon: 1});
                         } else if (ret.code == 401) {
                             layer.msg(ret.msg, {icon: 2, time: 1500}, function () {
-                                location.replace('/login');
+                                location.replace('[[@{/login}]]');
                             }, 1000);
                             return;
                         }
@@ -186,7 +186,7 @@
                     //table.reload('table-user', {});
                 } else if (data.code == 401) {
                     layer.msg(data.msg, {icon: 2, time: 1500}, function () {
-                        location.replace('/login');
+                        location.replace('[[@{/login}]]');
                     }, 1000);
                     return;
                 } else {
diff --git a/src/main/resources/templates/system/operator/operator.html b/src/main/resources/templates/system/operator/operator.html
index 250bdeb..682e6c4 100644
--- a/src/main/resources/templates/system/operator/operator.html
+++ b/src/main/resources/templates/system/operator/operator.html
@@ -135,7 +135,7 @@
                         admin.finishPopupCenter();
                     } else if (data.code == 401) {
                         layer.msg(result.msg, {icon: 2, time: 1500}, function () {
-                            location.replace('/login');
+                            location.replace('[[@{/login}]]');
                         }, 1000);
                         return;
                     } else {
diff --git a/src/main/resources/templates/system/operator/setpwd.html b/src/main/resources/templates/system/operator/setpwd.html
index 2e9085e..53f4fef 100644
--- a/src/main/resources/templates/system/operator/setpwd.html
+++ b/src/main/resources/templates/system/operator/setpwd.html
@@ -58,11 +58,11 @@
                     layer.closeAll('loading');
                     if (result.code == 200) {
                         layer.msg(result.msg, {icon: 1, time: 1500}, function () {
-                            location.replace('/login');
+                            location.replace('[[@{/login}]]');
                         }, 1000);
                     } else if (data.code == 401) {
                         layer.msg(result.msg, {icon: 2, time: 1500}, function () {
-                            location.replace('/login');
+                            location.replace('[[@{/login}]]');
                         }, 1000);
                         return;
                     } else {
diff --git a/src/main/resources/templates/system/operator/userinfor.html b/src/main/resources/templates/system/operator/userinfor.html
index 7dd159a..1193ef3 100644
--- a/src/main/resources/templates/system/operator/userinfor.html
+++ b/src/main/resources/templates/system/operator/userinfor.html
@@ -79,7 +79,7 @@
                         layer.msg(result.msg, {icon: 1});
                     } else if (data.code == 401) {
                         layer.msg(result.msg, {icon: 2, time: 1500}, function () {
-                            location.replace('/login');
+                            location.replace('[[@{/login}]]');
                         }, 1000);
                         return;
                     } else {
diff --git a/src/main/resources/templates/system/param/apiclientform.html b/src/main/resources/templates/system/param/apiclientform.html
index 6f9ed72..94353f7 100644
--- a/src/main/resources/templates/system/param/apiclientform.html
+++ b/src/main/resources/templates/system/param/apiclientform.html
@@ -58,7 +58,7 @@
                         admin.finishPopupCenter();
                     } else if (data.code == 401) {
                         layer.msg(result.msg, {icon: 2, time: 1500}, function () {
-                            location.replace('/login');
+                            location.replace('[[@{/login}]]');
                         }, 1000);
                         return;
                     } else {
diff --git a/src/main/resources/templates/system/param/apiclientpara.html b/src/main/resources/templates/system/param/apiclientpara.html
index a6965b2..4c8e214 100644
--- a/src/main/resources/templates/system/param/apiclientpara.html
+++ b/src/main/resources/templates/system/param/apiclientpara.html
@@ -91,7 +91,7 @@
                     layer.msg(data.msg, {icon: 1});
                 } else if (data.code == 401) {
                     layer.msg(data.msg, {icon: 2, time: 1500}, function () {
-                        location.replace('/login');
+                        location.replace('[[@{/login}]]');
                     }, 1000);
                     return;
                 } else {
@@ -122,7 +122,7 @@
                             layer.msg(data.msg, {icon: 1});
                         } else if (data.code == 401) {
                             layer.msg(data.msg, {icon: 2, time: 1500}, function () {
-                                location.replace('/login');
+                                location.replace('[[@{/login}]]');
                             }, 1000);
                             return;
                         } else {
@@ -152,7 +152,7 @@
                     layer.msg("修改成功", {icon: 1});
                 } else if (data.code == 401) {
                     layer.msg(data.msg, {icon: 2, time: 1500}, function () {
-                        location.replace('/login');
+                        location.replace('[[@{/login}]]');
                     }, 1000);
                     return;
                 } else {
diff --git a/src/main/resources/templates/system/param/businesspara.html b/src/main/resources/templates/system/param/businesspara.html
index 4fa6a23..0da59dd 100644
--- a/src/main/resources/templates/system/param/businesspara.html
+++ b/src/main/resources/templates/system/param/businesspara.html
@@ -80,7 +80,7 @@
                             layer.msg(data.msg, {icon: 1});
                         } else if (data.code == 401) {
                             layer.msg(data.msg, {icon: 2, time: 1500}, function () {
-                                location.replace('/login');
+                                location.replace('[[@{/login}]]');
                             }, 1000);
                             return;
                         } else {
@@ -112,7 +112,7 @@
                             obj.update({ paraval: value });
                         } else if (data.code == 401) {
                             layer.msg(data.msg, {icon: 2, time: 1500}, function () {
-                                location.replace('/login');
+                                location.replace('[[@{/login}]]');
                             }, 1000);
                             return;
                         } else {
diff --git a/src/main/resources/templates/system/param/busparaform.html b/src/main/resources/templates/system/param/busparaform.html
index b9d48c2..39dd9de 100644
--- a/src/main/resources/templates/system/param/busparaform.html
+++ b/src/main/resources/templates/system/param/busparaform.html
@@ -70,7 +70,7 @@
                         admin.finishPopupCenter();
                     } else if (result.code == 401) {
                         layer.msg(result.msg, {icon: 2, time: 1500}, function () {
-                            location.replace('/login');
+                            location.replace('[[@{/login}]]');
                         }, 1000);
                         return;
                     } else {
diff --git a/src/main/resources/templates/system/param/paytype.html b/src/main/resources/templates/system/param/paytype.html
index 32ceb04..94ce96a 100644
--- a/src/main/resources/templates/system/param/paytype.html
+++ b/src/main/resources/templates/system/param/paytype.html
@@ -137,7 +137,7 @@
                     table.reload('paytypeTable');
                 } else if (data.code == 401) {
                     layer.msg(data.msg, {icon: 2, time: 1500}, function () {
-                        location.replace('/login');
+                        location.replace('[[@{/login}]]');
                     }, 1000);
                     return;
                 } else {
@@ -179,7 +179,7 @@
                     layer.msg(data.msg, {icon: 1, time: 1000});
                 } else if (data.code == 401) {
                     layer.msg(data.msg, {icon: 2, time: 1500}, function () {
-                        location.replace('/login');
+                        location.replace('[[@{/login}]]');
                     }, 1000);
                     return;
                 } else {
@@ -206,7 +206,7 @@
                     layer.msg("修改成功", {icon: 1, time: 1000});
                 } else if (data.code == 401) {
                     layer.msg(data.msg, {icon: 2, time: 1500}, function () {
-                        location.replace('/login');
+                        location.replace('[[@{/login}]]');
                     }, 1000);
                     return;
                 } else {
@@ -235,7 +235,7 @@
                             layer.msg(data.msg, {icon: 1, time: 1000});
                         } else if (data.code == 401) {
                             layer.msg(data.msg, {icon: 2, time: 1500}, function () {
-                                location.replace('/login');
+                                location.replace('[[@{/login}]]');
                             }, 1000);
                             return;
                         } else {
diff --git a/src/main/resources/templates/system/param/paytypeconfig.html b/src/main/resources/templates/system/param/paytypeconfig.html
index 47df096..ad6c9cf 100644
--- a/src/main/resources/templates/system/param/paytypeconfig.html
+++ b/src/main/resources/templates/system/param/paytypeconfig.html
@@ -58,7 +58,7 @@
                         admin.finishPopupCenter();
                     } else if (result.code == 401) {
                         layer.msg(result.msg, {icon: 2, time: 1500}, function () {
-                            location.replace('/login');
+                            location.replace('[[@{/login}]]');
                         }, 1000);
                         return;
                     } else {
diff --git a/src/main/resources/templates/system/param/paytypeform.html b/src/main/resources/templates/system/param/paytypeform.html
index 4e65d26..e3a2d5a 100644
--- a/src/main/resources/templates/system/param/paytypeform.html
+++ b/src/main/resources/templates/system/param/paytypeform.html
@@ -96,7 +96,7 @@
                         admin.finishPopupCenter();
                     } else if (result.code == 401) {
                         layer.msg(result.msg, {icon: 2, time: 1500}, function () {
-                            location.replace('/login');
+                            location.replace('[[@{/login}]]');
                         }, 1000);
                         return;
                     } else {
@@ -104,9 +104,8 @@
                         layer.msg(result.msg, {icon: 2});
                     }
                 },
-                error : function() {
-                    layer.closeAll('loading');
-                    layer.msg("请求服务器失败！", {icon: 2});
+                error : function(err){
+                    admin.errorBack(err);
                 }
             });
             return false;
diff --git a/src/main/resources/templates/system/param/syspara.html b/src/main/resources/templates/system/param/syspara.html
index 98a622d..f49293b 100644
--- a/src/main/resources/templates/system/param/syspara.html
+++ b/src/main/resources/templates/system/param/syspara.html
@@ -79,7 +79,7 @@
                     layer.msg("修改成功", {icon: 1});
                 } else if (data.code == 401) {
                     layer.msg(data.msg, {icon: 2, time: 1500}, function () {
-                        location.replace('/login');
+                        location.replace('[[@{/login}]]');
                     }, 1000);
                     return;
                 } else {
diff --git a/src/main/resources/templates/system/role/form.html b/src/main/resources/templates/system/role/form.html
index 2595cd6..d60bac8 100755
--- a/src/main/resources/templates/system/role/form.html
+++ b/src/main/resources/templates/system/role/form.html
@@ -54,7 +54,7 @@
                         admin.finishPopupCenter();
                     } else if (result.code == 401) {
                         layer.msg(result.msg, {icon: 2, time: 1500}, function () {
-                            location.replace('/login');
+                            location.replace('[[@{/login}]]');
                         }, 1000);
                         return;
                     } else {
diff --git a/src/main/resources/templates/system/role/func.html b/src/main/resources/templates/system/role/func.html
index 48d6dff..aeca844 100755
--- a/src/main/resources/templates/system/role/func.html
+++ b/src/main/resources/templates/system/role/func.html
@@ -39,7 +39,7 @@
                 initTree(data.node);
             } else if (data.code == 401) {
                 layer.msg(data.msg, {icon: 2, time: 1500}, function () {
-                    location.replace('/login');
+                    location.replace('[[@{/login}]]');
                 }, 1000);
                 return;
             } else {
@@ -72,7 +72,7 @@
                     admin.finishPopupCenter();
                 } else if (data.code == 401) {
                     layer.msg(data.msg, {icon: 2, time: 1500}, function () {
-                        location.replace('/login');
+                        location.replace('[[@{/login}]]');
                     }, 1000);
                     return;
                 } else {
diff --git a/src/main/resources/templates/system/role/index.html b/src/main/resources/templates/system/role/index.html
index ac290f7..f92912f 100644
--- a/src/main/resources/templates/system/role/index.html
+++ b/src/main/resources/templates/system/role/index.html
@@ -103,7 +103,7 @@
                         layer.msg(data.msg, {icon: 1});
                     } else if (data.code == 401) {
                         layer.msg(data.msg, {icon: 2, time: 1500}, function () {
-                            location.replace('/login');
+                            location.replace('[[@{/login}]]');
                         }, 1000);
                         return;
                     } else {
diff --git a/src/main/resources/templates/system/shop/config.html b/src/main/resources/templates/system/shop/config.html
index 0ef4224..38f6b8a 100644
--- a/src/main/resources/templates/system/shop/config.html
+++ b/src/main/resources/templates/system/shop/config.html
@@ -97,7 +97,7 @@
                 initTree(data.data);
             } else if (data.code == 401) {
                 layer.msg(data.msg, {icon: 2, time: 1500}, function () {
-                    location.replace('/login');
+                    location.replace('[[@{/login}]]');
                 }, 1000);
                 return;
             } else {
@@ -187,7 +187,7 @@
                     table.reload('shopPaytypeTable');
                 } else if (data.code == 401) {
                     layer.msg(data.msg, {icon: 2, time: 1500}, function () {
-                        location.replace('/login');
+                        location.replace('[[@{/login}]]');
                     }, 1000);
                     return;
                 } else {
@@ -224,7 +224,7 @@
                     layer.msg(data.msg, {icon: 1, time: 1000});
                 } else if (data.code == 401) {
                     layer.msg(data.msg, {icon: 2, time: 1500}, function () {
-                        location.replace('/login');
+                        location.replace('[[@{/login}]]');
                     }, 1000);
                     return;
                 } else {
diff --git a/src/main/resources/templates/system/shop/configform.html b/src/main/resources/templates/system/shop/configform.html
index b67a791..e0bd620 100644
--- a/src/main/resources/templates/system/shop/configform.html
+++ b/src/main/resources/templates/system/shop/configform.html
@@ -82,7 +82,7 @@
                         admin.finishPopupCenter();
                     } else if (result.code == 401) {
                         layer.msg(result.msg, {icon: 2, time: 1500}, function () {
-                            location.replace('/login');
+                            location.replace('[[@{/login}]]');
                         }, 1000);
                         return;
                     } else {
diff --git a/src/main/resources/templates/system/shop/configpara.html b/src/main/resources/templates/system/shop/configpara.html
index a657d7c..6e77151 100644
--- a/src/main/resources/templates/system/shop/configpara.html
+++ b/src/main/resources/templates/system/shop/configpara.html
@@ -60,7 +60,7 @@
                         admin.finishPopupCenter();
                     } else if (result.code == 401) {
                         layer.msg(result.msg, {icon: 2, time: 1500}, function () {
-                            location.replace('/login');
+                            location.replace('[[@{/login}]]');
                         }, 1000);
                         return;
                     } else {
diff --git a/src/main/resources/templates/system/shop/index.html b/src/main/resources/templates/system/shop/index.html
index f5e1b7b..000ef7d 100644
--- a/src/main/resources/templates/system/shop/index.html
+++ b/src/main/resources/templates/system/shop/index.html
@@ -227,7 +227,7 @@
                             flag = true;
                         } else if (result.code == 401) {
                             layer.msg(result.msg, {icon: 2, time: 1500}, function () {
-                                location.replace('/login');
+                                location.replace('[[@{/login}]]');
                             }, 1000);
                         } else {
                             console.log('err:' + result.code);
@@ -291,7 +291,7 @@
                         $("#shop-info").hide();
                     } else if (result.code == 401) {
                         layer.msg(result.msg, {icon: 2, time: 1500}, function () {
-                            location.replace('/login');
+                            location.replace('[[@{/login}]]');
                         }, 1000);
                         return;
                     } else {
@@ -354,7 +354,7 @@
                     $("#shop-info").show();
                 } else if (data.code == 401) {
                     layer.msg(data.msg, {icon: 2, time: 1500}, function () {
-                        location.replace('/login');
+                        location.replace('[[@{/login}]]');
                     }, 1000);
                     return;
                 } else {
@@ -371,7 +371,7 @@
                 initTree(data.data);
             } else if (data.code == 401) {
                 layer.msg(data.msg, {icon: 2, time: 1500}, function () {
-                    location.replace('/login');
+                    location.replace('[[@{/login}]]');
                 }, 1000);
                 return;
             } else {
diff --git a/src/main/resources/templates/system/user/account.html b/src/main/resources/templates/system/user/account.html
index eed369f..b08eb5c 100644
--- a/src/main/resources/templates/system/user/account.html
+++ b/src/main/resources/templates/system/user/account.html
@@ -97,7 +97,7 @@
                         layer.msg(data.msg, {icon: 1});
                     } else if (data.code == 401) {
                         layer.msg(data.msg, {icon: 2, time: 1500}, function () {
-                            location.replace('/login');
+                            location.replace('[[@{/login}]]');
                         }, 1000);
                         return;
                     } else {
diff --git a/src/main/resources/templates/system/user/add.html b/src/main/resources/templates/system/user/add.html
index e137c48..e2f2c81 100755
--- a/src/main/resources/templates/system/user/add.html
+++ b/src/main/resources/templates/system/user/add.html
@@ -91,7 +91,7 @@
                         admin.finishPopupCenter();
                     } else if (result.code == 401) {
                         layer.msg(result.msg, {icon: 2, time: 1500}, function () {
-                            location.replace('/login');
+                            location.replace('[[@{/login}]]');
                         }, 1000);
                         return;
                     } else {
diff --git a/src/main/resources/templates/system/user/bind.html b/src/main/resources/templates/system/user/bind.html
index 96bca04..e5ea4d5 100755
--- a/src/main/resources/templates/system/user/bind.html
+++ b/src/main/resources/templates/system/user/bind.html
@@ -57,7 +57,7 @@
                         layer.msg(data.msg, {icon: 1});
                     } else if (data.code == 401) {
                         layer.msg(data.msg, {icon: 2, time: 1500}, function () {
-                            location.replace('/login');
+                            location.replace('[[@{/login}]]');
                         }, 1000);
                         return;
                     }
diff --git a/src/main/resources/templates/system/user/index.html b/src/main/resources/templates/system/user/index.html
index 122bbbb..df7a1d5 100644
--- a/src/main/resources/templates/system/user/index.html
+++ b/src/main/resources/templates/system/user/index.html
@@ -132,7 +132,7 @@
                         layer.msg(data.msg, {icon: 1});
                     } else if (data.code == 401) {
                         layer.msg(data.msg, {icon: 2, time: 1500}, function () {
-                            location.replace('/login');
+                            location.replace('[[@{/login}]]');
                         }, 1000);
                         return;
                     } else {
diff --git a/src/main/resources/templates/system/user/point.html b/src/main/resources/templates/system/user/point.html
index 618145b..f588110 100644
--- a/src/main/resources/templates/system/user/point.html
+++ b/src/main/resources/templates/system/user/point.html
@@ -74,7 +74,7 @@
                         layer.msg(data.msg, {icon: 1});
                     } else if (data.code == 401) {
                         layer.msg(data.msg, {icon: 2, time: 1500}, function () {
-                            location.replace('/login');
+                            location.replace('[[@{/login}]]');
                         }, 1000);
                         return;
                     } else {
diff --git a/src/main/resources/templates/system/user/pointdtl.html b/src/main/resources/templates/system/user/pointdtl.html
index e5f6378..9be6caf 100644
--- a/src/main/resources/templates/system/user/pointdtl.html
+++ b/src/main/resources/templates/system/user/pointdtl.html
@@ -75,7 +75,7 @@
                         layer.msg(data.msg, {icon: 1});
                     } else if (data.code == 401) {
                         layer.msg(data.msg, {icon: 2, time: 1500}, function () {
-                            location.replace('/login');
+                            location.replace('[[@{/login}]]');
                         }, 1000);
                         return;
                     } else {
