Browse Source

修复urlbug

guoziyun 1 năm trước cách đây
mục cha
commit
0098a574be

+ 39 - 21
routes/index.js

@@ -187,7 +187,7 @@ router.get(/^\/(en|zh|es|pt|ja)$/, function (req, res, next) {  // 限制严格
         languages,
         lang,
         tags,
-        uri: `/${lang}`,
+        uri: req.originalUrl,
       };
 
       // 渲染EJS模板到内存中
@@ -271,7 +271,8 @@ router.get('/:lang/category/:tag?', function (req, res, next) {
         languages,
         lang,
         tag,
-        uri: `/${lang}/category/${tag}`,
+        uri: req.originalUrl,
+        pageUri: replaceUriParams,
       };
 
       // 渲染EJS模板到内存中
@@ -344,7 +345,8 @@ router.get('/:lang/tag/:tag?', function (req, res, next) {
         lang,
         tag,
         tags,
-        uri: `/${lang}/tag/${tag}`,
+        uri: req.originalUrl,
+        pageUri: replaceUriParams,
       };
 
       // 渲染EJS模板到内存中
@@ -415,7 +417,8 @@ router.get('/:lang/search', function (req, res, next) {
         categories,
         languages,
         lang,
-        uri: `/${lang}/search?search=${search}`,
+        uri: req.originalUrl,
+        pageUri: replaceUriParams,
       };
       // 渲染EJS模板到内存中
       res.render('search', data, async (err, html) => {
@@ -484,7 +487,8 @@ router.get('/:lang/special', function (req, res, next) {
         translate,
         languages,
         lang,
-        uri: `/${lang}/special`,
+        uri: req.originalUrl,
+        pageUri: replaceUriParams,
       };
 
       // 渲染EJS模板到内存中
@@ -554,7 +558,8 @@ router.get('/:lang/albums', function (req, res, next) {
         translate,
         languages,
         lang,
-        uri: `/${lang}/albums`,
+        uri: req.originalUrl,
+        pageUri: replaceUriParams,
       };
 
       // 渲染EJS模板到内存中
@@ -636,7 +641,8 @@ router.get('/:lang/coloring-page-album/:id', function (req, res, next) {
         translate,
         languages,
         lang,
-        uri: `/${lang}/album/${id}`,
+        uri: req.originalUrl,
+        pageUri: replaceUriParams,
       };
       // 渲染EJS模板到内存中
       res.render('album', data, async (err, html) => {
@@ -730,7 +736,8 @@ router.get('/:lang/artists', function (req, res, next) {
         meta,
         languages,
         lang,
-        uri: `/${lang}/artists`,
+        uri: req.originalUrl,
+        pageUri: replaceUriParams,
       };
 
       // 渲染EJS模板到内存中
@@ -819,7 +826,8 @@ router.get('/:lang/artist/:id', function (req, res, next) {
         meta,
         lang,
         languages,
-        uri: `/${lang}/artist/${id}`,
+        uri: req.originalUrl,
+        pageUri: replaceUriParams,
       };
 
       // 渲染EJS模板到内存中
@@ -910,10 +918,8 @@ router.get('/:lang/coloring-page/:str', function (req, res, next) {
 
 
       let data = {
-        // title: `${doc.name.replace(/[_]+/g, '-')}`,
-        title: `${doc.title} | ${translate.printableColoringPage[lang]}`,
+        title: `${doc.title}`,
         description: `${doc.desc}`,
-        // description: `${meta.detailDescription[lang]}: ${doc.desc}`,
         detail: doc,
         data: result.data,
         page: result.page,
@@ -924,7 +930,8 @@ router.get('/:lang/coloring-page/:str', function (req, res, next) {
         lang,
         languages,
         relates: result.data,
-        uri: doc.uri,
+        uri: req.originalUrl,
+        pageUri: replaceUriParams,
       };
 
       // 渲染EJS模板到内存中
@@ -1000,16 +1007,15 @@ router.get('/:lang/detail/:id', function (req, res, next) {
       organizeData(result.data, lang, imageType);
 
       let data = {
-        // title: `${doc.name.replace(/[_]+/g, '-')}`,
-        title: `${doc.title} | ${translate.printableColoringPage[lang]}`,
+        title: `${doc.title}`,
         description: `${doc.desc}`,
-        // description: `${meta.detailDescription[lang]}: ${doc.desc}`,
         data: doc,
         translate,
         lang,
         languages,
         relates,
-        uri: `${lang}/detail/${id}`,
+        uri: req.originalUrl,
+        pageUri: replaceUriParams,
       };
 
       // 渲染EJS模板到内存中
@@ -1101,7 +1107,7 @@ router.get('/:lang/info', function (req, res, next) {
         lang,
         languages,
         translate,
-        uri: `/${lang}/info`,
+        uri: req.originalUrl,
       };
 
       // 渲染EJS模板到内存中
@@ -1203,9 +1209,6 @@ const organizeDetail = (doc, lang, imageType) => {
 
   doc.tags = doc.tags.filter(str => !/[\u4e00-\u9fa5]/.test(str)); // 过滤掉tags中的中文
 
-  let utf8name = encodeURIComponent(uriTitle.replace(/[\s_]+/g, '-')).toLowerCase();
-  doc.uri = `/${lang}/coloring-page/${utf8name}-${doc._id}`;
-
   doc.downlink = `${host}/thumbs/coloring-page/page/1200/${doc._id}.${imageType}`;
 
   delete doc.hasSpecial;
@@ -1216,5 +1219,20 @@ const organizeDetail = (doc, lang, imageType) => {
 }
 
 
+// 替换URI中的page和length参数
+function replaceUriParams(uri, newPage, newLength) {
+  if (!uri.includes('?')) {
+    return uri += `?page=${newPage}&length=${newLength}`;
+  }
+  // 使用正则表达式替换page参数
+  uri = uri.replace(/(page=)\d+/, `page=${newPage}`);
+  // 使用正则表达式替换length参数
+  uri = uri.replace(/(length=)\d+/, `length=${newLength}`);
+
+  // 返回替换后的URI
+  return uri;
+}
+
+
 
 module.exports = router;

+ 0 - 6
views/albums.ejs

@@ -4,12 +4,6 @@
 <head>
   <%- include('common-meta') %>
 
-    <link rel="alternate" href="https://art.pcoloring.com/en/albums" hrefLang="en" />
-    <link rel="alternate" href="https://art.pcoloring.com/zh/albums" hrefLang="zh" />
-    <link rel="alternate" href="https://art.pcoloring.com/es/albums" hrefLang="es" />
-    <link rel="alternate" href="https://art.pcoloring.com/pt/albums" hrefLang="pt" />
-    <link rel="alternate" href="https://art.pcoloring.com/ja/albums" hrefLang="ja" />
-
     <link rel="stylesheet" href="/stylesheets/styles.css">
     <link rel="stylesheet" href="/stylesheets/header.css">
 

+ 3 - 7
views/category.ejs

@@ -4,12 +4,6 @@
 <head>
   <%- include('common-meta') %>
 
-    <link rel="alternate" href="https://art.pcoloring.com/en/category/<%= tag%>" hrefLang="en" />
-    <link rel="alternate" href="https://art.pcoloring.com/zh/category/<%= tag%>" hrefLang="zh" />
-    <link rel="alternate" href="https://art.pcoloring.com/es/category/<%= tag%>" hrefLang="es" />
-    <link rel="alternate" href="https://art.pcoloring.com/pt/category/<%= tag%>" hrefLang="pt" />
-    <link rel="alternate" href="https://art.pcoloring.com/ja/category/<%= tag%>" hrefLang="ja" />
-
     <link rel="stylesheet" href="/stylesheets/styles.css">
     <link rel="stylesheet" href="/stylesheets/header.css">
     <link rel="stylesheet" href="/stylesheets/category.css">
@@ -83,7 +77,9 @@
         <% data.forEach(item=> { %>
           <div class="image-card">
             <a href="<%= item.uri %>"><img src="<%= item.thumb %>" alt="<%= item.title %>"></a>
-            <div class="card-title"><%= item.title %></div>
+            <div class="card-title">
+              <%= item.title %>
+            </div>
           </div>
           <% }); %>
       </div>

+ 8 - 0
views/common-meta.ejs

@@ -1,6 +1,14 @@
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <link rel="icon" href="/assets/icon/favicon.ico" type="image/x-icon">
+
+
+<link rel="alternate" href="https://art.pcoloring.com<%=uri.replace('/'+lang, '/en') %>" hrefLang="en" />
+<link rel="alternate" href="https://art.pcoloring.com<%=uri.replace('/'+lang, '/zh') %>" hrefLang="zh" />
+<link rel="alternate" href="https://art.pcoloring.com<%=uri.replace('/'+lang, '/es') %>" hrefLang="es" />
+<link rel="alternate" href="https://art.pcoloring.com<%=uri.replace('/'+lang, '/pt') %>" hrefLang="pt" />
+<link rel="alternate" href="https://art.pcoloring.com<%=uri.replace('/'+lang, '/ja') %>" hrefLang="ja" />
+
 <title>
   <%= title %>
 </title>

+ 0 - 6
views/designers.ejs

@@ -4,12 +4,6 @@
 <head>
   <%- include('common-meta') %>
 
-    <link rel="alternate" href="https://art.pcoloring.com/en/designers" hrefLang="en" />
-    <link rel="alternate" href="https://art.pcoloring.com/zh/designers" hrefLang="zh" />
-    <link rel="alternate" href="https://art.pcoloring.com/es/designers" hrefLang="es" />
-    <link rel="alternate" href="https://art.pcoloring.com/pt/designers" hrefLang="pt" />
-    <link rel="alternate" href="https://art.pcoloring.com/ja/designers" hrefLang="ja" />
-
     <link rel="stylesheet" href="/stylesheets/header.css">
     <link rel="stylesheet" href="/stylesheets/designer.css">
 

+ 0 - 6
views/detail.ejs

@@ -4,12 +4,6 @@
 <head>
     <%- include('common-meta') %>
 
-        <link rel="alternate" href="https://art.pcoloring.com/en/<%= uri.substring(3) %>" hrefLang="en" />
-        <link rel="alternate" href="https://art.pcoloring.com/zh/<%= uri.substring(3) %>" hrefLang="zh" />
-        <link rel="alternate" href="https://art.pcoloring.com/es/<%= uri.substring(3) %>" hrefLang="es" />
-        <link rel="alternate" href="https://art.pcoloring.com/pt/<%= uri.substring(3) %>" hrefLang="pt" />
-        <link rel="alternate" href="https://art.pcoloring.com/ja/<%= uri.substring(3) %>" hrefLang="ja" />
-
         <link rel="stylesheet" href="/stylesheets/styles.css">
         <link rel="stylesheet" href="/stylesheets/header.css">
         <link rel="stylesheet" href="/stylesheets/detail.css">

+ 9 - 14
views/index.ejs

@@ -3,11 +3,6 @@
 
 <head>
   <%- include('common-meta') %>
-    <link rel="alternate" href="https://art.pcoloring.com/en" hrefLang="en" />
-    <link rel="alternate" href="https://art.pcoloring.com/zh" hrefLang="zh" />
-    <link rel="alternate" href="https://art.pcoloring.com/es" hrefLang="es" />
-    <link rel="alternate" href="https://art.pcoloring.com/pt" hrefLang="pt" />
-    <link rel="alternate" href="https://art.pcoloring.com/ja" hrefLang="ja" />
     <link rel="alternate" href="https://art.pcoloring.com" hrefLang="x-default" />
 
     <link rel="stylesheet" href="/stylesheets/styles.css">
@@ -55,15 +50,15 @@
 
 <body>
   <%- include('header') %>
-    <%- include('intro-section') %>
-      <%- include('latest-section') %>
-        <%- include('album-section') %>
-          <%- include('hot-section') %>
-            <%- include('designer-section') %>
-              <%- include('special-section') %>
-                <%- include('footer') %>
-                  <%- include('cookie-banner') %>
-                    <div style="height: 50px;"></div>
+  <%- include('intro-section') %>
+  <%- include('latest-section') %>
+  <%- include('album-section') %>
+  <%- include('hot-section') %>
+  <%- include('designer-section') %>
+  <%- include('special-section') %>
+  <%- include('footer') %>
+  <%- include('cookie-banner') %>
+  <div style="height: 50px;"></div>
 </body>
 
 

+ 2 - 6
views/info.ejs

@@ -4,13 +4,8 @@
 <head>
   <%- include('common-meta') %>
 
-    <link rel="alternate" href="https://art.pcoloring.com/en/info" hrefLang="en" />
-    <link rel="alternate" href="https://art.pcoloring.com/zh/info" hrefLang="zh" />
-    <link rel="alternate" href="https://art.pcoloring.com/es/info" hrefLang="es" />
-    <link rel="alternate" href="https://art.pcoloring.com/pt/info" hrefLang="pt" />
-    <link rel="alternate" href="https://art.pcoloring.com/ja/info" hrefLang="ja" />
-
     <link rel="stylesheet" href="/stylesheets/styles.css">
+    <link rel="stylesheet" href="/stylesheets/header.css">
     <link rel="stylesheet" href="/stylesheets/info.css">
 
     <script src="https://cdnjs.cloudflare.com/ajax/libs/bodymovin/5.5.8/lottie.min.js"></script>
@@ -27,6 +22,7 @@
 </script>
 
 <body>
+  <%- include('header') %>
   <section id="about" class="full-screen about-container">
     <div class="about-content">
       <div class="section-title">

+ 4 - 3
views/pagination.ejs

@@ -13,13 +13,13 @@ const showEllipsis = totalPages > 6 && (startPage > 1 || endPage < totalPages);
     <span style="font-size: 15px; font-family:sans-serif; margin-right: 20px;"><%= translate.total[lang] %> <%= recordsFiltered %> <%= translate.item[lang] %>,  <%= length %><%= translate.item[lang] %>/<%= translate.page[lang] %></span>
     <ul>
         <% for (let i = startPage; i <= endPage; i++) { %>
-        <li class="<%= i === page ? 'active' : '' %>"><a href="<%= uri %><%= uri.includes('?')? '&' : '?' %>page=<%= i %>&length=<%= length %>" class="<%= i === page ? 'active' : '' %>"> <%= i %> </a></li>
+        <li class="<%= i === page ? 'active' : '' %>"><a href="<%= pageUri(uri, i, length)%>" class="<%= i === page ? 'active' : '' %>"> <%= i %> </a></li>
         <% } %>
         <% if (showEllipsis) { %>
         <li class="ellipsis">...</li>
         <% } %>
         <% if (endPage < totalPages) { %>
-        <li><a href="<%= uri %><%= uri.includes('?')? '&' : '?' %>page=<%= totalPages %>&length=<%= length %>"><%= totalPages %></a></li>
+        <li><a href="<%= pageUri(uri, totalPages, length)%>"><%= totalPages %></a></li>
         <% } %>
     </ul>
     <input type="number" id="pageInput" min="1" max="<%= totalPages %>">
@@ -27,12 +27,13 @@ const showEllipsis = totalPages > 6 && (startPage > 1 || endPage < totalPages);
 </div>
 
 <script>
+
   function jumpToPage() {
     var pageInput = document.getElementById('pageInput');
     var page = parseInt(pageInput.value, 10);
     var totalPages = '<%= totalPages %>'; // 从EJS模板中获取的总页数
     if (!isNaN(page) && page > 0 && page <= totalPages) {
-        window.location.href = `<%= uri %><%= uri.includes('?')? '&' : '?' %>page=${page}&length=<%= length %>`
+        window.location.href = `<%= pageUri(uri, page, length)%>`
     } else {
         alert('<%= translate.wrongPage[lang] %> :(1-<%= totalPages %>)');
     }

+ 0 - 6
views/search.ejs

@@ -4,12 +4,6 @@
 <head>
   <%- include('common-meta') %>
 
-    <link rel="alternate" href="https://art.pcoloring.com/en/search" hrefLang="en" />
-    <link rel="alternate" href="https://art.pcoloring.com/zh/search" hrefLang="zh" />
-    <link rel="alternate" href="https://art.pcoloring.com/es/search" hrefLang="es" />
-    <link rel="alternate" href="https://art.pcoloring.com/pt/search" hrefLang="pt" />
-    <link rel="alternate" href="https://art.pcoloring.com/ja/search" hrefLang="ja" />
-
     <link rel="stylesheet" href="/stylesheets/styles.css">
     <link rel="stylesheet" href="/stylesheets/header.css">
 

+ 0 - 6
views/special.ejs

@@ -4,12 +4,6 @@
 <head>
   <%- include('common-meta') %>
 
-    <link rel="alternate" href="https://art.pcoloring.com/en/special" hrefLang="en" />
-    <link rel="alternate" href="https://art.pcoloring.com/zh/special" hrefLang="zh" />
-    <link rel="alternate" href="https://art.pcoloring.com/es/special" hrefLang="es" />
-    <link rel="alternate" href="https://art.pcoloring.com/pt/special" hrefLang="pt" />
-    <link rel="alternate" href="https://art.pcoloring.com/ja/special" hrefLang="ja" />
-
     <link rel="stylesheet" href="/stylesheets/styles.css">
     <link rel="stylesheet" href="/stylesheets/header.css">
 

+ 0 - 6
views/tag.ejs

@@ -4,12 +4,6 @@
 <head>
   <%- include('common-meta') %>
 
-    <link rel="alternate" href="https://art.pcoloring.com/en/tag/<%= tag%>" hrefLang="en" />
-    <link rel="alternate" href="https://art.pcoloring.com/zh/tag/<%= tag%>" hrefLang="zh" />
-    <link rel="alternate" href="https://art.pcoloring.com/es/tag/<%= tag%>" hrefLang="es" />
-    <link rel="alternate" href="https://art.pcoloring.com/pt/tag/<%= tag%>" hrefLang="pt" />
-    <link rel="alternate" href="https://art.pcoloring.com/ja/tag/<%= tag%>" hrefLang="ja" />
-
     <link rel="stylesheet" href="/stylesheets/styles.css">
     <link rel="stylesheet" href="/stylesheets/header.css">
     <link rel="stylesheet" href="/stylesheets/tag.css">