<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
>
<channel>
<title><![CDATA[木头人]]></title> 
<atom:link href="https://www.52mtr.cn/rss.php" rel="self" type="application/rss+xml" />
<description><![CDATA[我爱木头人]]></description>
<link>https://www.52mtr.cn/</link>
<language>zh-cn</language>

<item>
    <title>/usr/bin/curl: /usr/local/lib/libcurl.so.4: no version information available (required by /usr/bin/curl) /usr/bin/curl:</title>
    <link>https://www.52mtr.cn/?post=108</link>
    <description><![CDATA[<p>宝塔申请证书提示/usr/bin/curl: /usr/local/lib/libcurl.so.4: no version information available (required by /usr/bin/curl) /usr/bin/curl:</p>
<p>locale libcurl.so.4</p>
<h2>大概是这样：</h2>
<pre><code class="language-shell">/usr/lib/x86_64-linux-gnu/libcurl.so.4
/usr/lib/x86_64-linux-gnu/libcurl.so.4.3.0
/usr/local/lib/libcurl.so.4
/usr/local/lib/libcurl.so.4.4.0</code></pre>
<h2>2.将这个冲突的软链接删掉：</h2>
<pre><code class="language-shell">rm -rf /usr/local/lib/libcurl.so.4</code></pre>
<h2>3. 然后，将 4.3.0 的静态库链接到上面：</h2>
<pre><code class="language-shell">ln -s /usr/lib/x86_64-linux-gnu/libcurl.so.4.3.0 /usr/local/lib/libcurl.so.4</code></pre>
<p>-- 这一步 要看看 /usr/lib/x86_64-linux-gnu/ 下是什么版本  比如 4.7.0或者啥的 有的没4.3.0</p>
<h2>验证一下：</h2>
<pre><code class="language-shell">ls -l /usr/local/lib/libcurl.so.4</code></pre>
<p>lrwxrwxrwx 1 root root 42 Apr 3 20:35 /usr/local/lib/libcurl.so.4 -&gt; /usr/lib/x86_64-linux-gnu/libcurl.so.4.3.0//对应版本<br />
然后 证书就能自动续签了</p>]]></description>
    <pubDate>Thu, 14 Aug 2025 14:06:47 +0800</pubDate>
    <dc:creator>木木</dc:creator>
    <guid>https://www.52mtr.cn/?post=108</guid>
</item>
<item>
    <title>魔方财务后台登录不跳转解决方法</title>
    <link>https://www.52mtr.cn/?post=107</link>
    <description><![CDATA[<p>某天我收到魔方财务系统发的工单邮件，登录后台处理客户的请求，但是后台提示正常登录却不跳转。<br />
我首先想到的是缓存的锅，改hosts直连源站避免cdn缓存，把浏览器缓存也删了，重新尝试，仍无法登录。我又想到可能是魔方没权限写到session，检测/tmp/session目录权限发现权限被改为755，改回777登录正常，附条命令</p>
<pre><code class="language-shell">chmod 777 /tmp/session/
//把/tmp/session/目录权限改为777</code></pre>]]></description>
    <pubDate>Tue, 03 Jun 2025 16:20:41 +0800</pubDate>
    <dc:creator>木木</dc:creator>
    <guid>https://www.52mtr.cn/?post=107</guid>
</item>
<item>
    <title>如何在网站里面展示开屏特效特效</title>
    <link>https://www.52mtr.cn/?post=106</link>
    <description><![CDATA[<p>最近木木做单子在做特效<br />
顺便出个教程吧</p>
<h3>实现方式：用 JavaScript 判断设备类型，动态切换视频源</h3>
<table>
<thead>
<tr>
<th>功能</th>
<th>实现</th>
</tr>
</thead>
<tbody>
<tr>
<td>自动播放视频</td>
<td>✅（带声音尝试播放，失败则自动降级为静音）</td>
</tr>
<tr>
<td>视频带声音</td>
<td>✅（用户点“Unmute”恢复声音）</td>
</tr>
<tr>
<td>视频播放完隐藏</td>
<td>✅</td>
</tr>
<tr>
<td>用户可点击静音按钮</td>
<td>✅</td>
</tr>
<tr>
<td>按钮黄绿色渐变美化</td>
<td>✅</td>
</tr>
</tbody>
</table>
<p>✅ 效果确认：<br />
✅ 每次访问首页，自动播放视频</p>
<p>✅ 视频播放完后自动淡出（隐藏）</p>
<p>✅ 页面不会跳转，不会闪屏</p>
<p>✅ 不使用 Cookie，确保“每次”都播放</p>
<p>✅ 移动端兼容（使用 playsinline + muted）</p>
<p>✅ 功能升级版按钮（黄绿色 + 图标 + 加载动效）<br />
🔧 效果：<br />
按钮始终黄绿色</p>
<p>带图标（音量 / 静音，跳过箭头）</p>
<p>进入页面时有淡入加载动效</p>
<p>Hover 有缩放发光效果</p>
<pre><code class="language-html">&lt;!-- 引入图标（Font Awesome CDN） --&gt;
&lt;link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/css/all.min.css" integrity="sha512-a2P6wh2YxY2OWD5lIGwK+jrfipFl9rVmq+kfrjKyT+FTclvLb4fFy+iGLjvWY4zRcPVnT05OytQ1eFAZbs5U9A==" crossorigin="anonymous" referrerpolicy="no-referrer" /&gt;

&lt;!-- Splash Video Container --&gt;
&lt;div id="splash-video" style="
  position: fixed;
  top: 0; left: 0;
  width: 100vw; height: 100vh;
  background: black;
  z-index: 99999;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  flex-direction: column;
"&gt;
  &lt;video id="introVideo" autoplay playsinline style="width: 100%; height: 100%; object-fit: cover;"&gt;
    &lt;!-- 视频源由 JS 控制 --&gt;
  &lt;/video&gt;

  &lt;!-- 按钮区域 --&gt;
  &lt;div style="
    position: absolute;
    top: 20px;
    right: 20px;
    z-index: 100000;
    display: flex;
    gap: 12px;
    opacity: 0;
    animation: fadeIn 1s ease-in-out 0.3s forwards;
  "&gt;
    &lt;button id="muteToggle" style="
      padding: 10px 20px;
      background: linear-gradient(45deg, #c3f500, #a2f100);
      background-color: #bfff00;
      color: #000;
      border: none;
      border-radius: 30px;
      font-weight: bold;
      font-size: 15px;
      cursor: pointer;
      box-shadow: 0 4px 10px rgba(195, 245, 0, 0.5);
      transition: all 0.3s ease;
      display: flex;
      align-items: center;
      gap: 8px;
    "&gt;
      &lt;i id="muteIcon" class="fas fa-volume-up"&gt;&lt;/i&gt;
      Mute
    &lt;/button&gt;

    &lt;button onclick="document.getElementById('splash-video').style.display='none'" style="
      padding: 10px 20px;
      background: linear-gradient(45deg, #c3f500, #a2f100);
      background-color: #bfff00;
      color: #000;
      border: none;
      border-radius: 30px;
      font-weight: bold;
      font-size: 15px;
      cursor: pointer;
      box-shadow: 0 4px 10px rgba(195, 245, 0, 0.5);
      transition: all 0.3s ease;
      display: flex;
      align-items: center;
      gap: 8px;
    "&gt;
      &lt;i class="fas fa-forward"&gt;&lt;/i&gt;
      Skip
    &lt;/button&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;!-- 加载动画 CSS --&gt;
&lt;style&gt;
  @keyframes fadeIn {
    to { opacity: 1; }
  }
  button:hover {
    transform: scale(1.05);
    box-shadow: 0 6px 14px rgba(195, 245, 0, 0.6);
  }
&lt;/style&gt;

&lt;!-- 视频控制脚本 --&gt;
&lt;script&gt;
  window.addEventListener("DOMContentLoaded", function () {
    const video = document.getElementById("introVideo");
    const muteBtn = document.getElementById("muteToggle");
    const muteIcon = document.getElementById("muteIcon");
    const splash = document.getElementById("splash-video");

    // 设备判断
    const isMobile = /Mobi|Android|iPhone|iPad|iPod/i.test(navigator.userAgent);
    const desktopVideo = "PC视频";
    const mobileVideo = "移动端视频";

    const source = document.createElement("source");
    source.src = isMobile ? mobileVideo : desktopVideo;
    source.type = "video/mp4";
    video.appendChild(source);

    video.muted = false;

    const playPromise = video.play();
    if (playPromise !== undefined) {
      playPromise.catch(() =&gt; {
        video.muted = true;
        video.play();
        muteBtn.innerHTML = '&lt;i id="muteIcon" class="fas fa-volume-mute"&gt;&lt;/i&gt; Unmute';
      });
    }

    video.onended = () =&gt; {
      splash.style.display = "none";
    };

    muteBtn.addEventListener("click", function () {
      video.muted = !video.muted;
      muteBtn.innerHTML = video.muted
        ? '&lt;i id="muteIcon" class="fas fa-volume-mute"&gt;&lt;/i&gt; Unmute'
        : '&lt;i id="muteIcon" class="fas fa-volume-up"&gt;&lt;/i&gt; Mute';
      if (video.paused) video.play();
    });
  });
&lt;/script&gt;
</code></pre>
<table>
<thead>
<tr>
<th>你只需做这 2 件事</th>
<th>项目</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<tr>
<td>桌面视频地址</td>
<td>替换 <code>desktopVideo</code> 的 URL</td>
</tr>
<tr>
<td>手机视频地址</td>
<td>替换 <code>mobileVideo</code> 的 URL</td>
</tr>
</tbody>
</table>
<h2>二次改版</h2>
<p>1️⃣ 按钮呼吸发光动画（科技感）<br />
2️⃣ 按钮滑入进入动画（右侧滑入）<br />
3️⃣ 视频结束或点击 Skip 时淡出过渡，而不是瞬间消失</p>
<pre><code class="language-php">&lt;!-- 引入图标（Font Awesome CDN） --&gt;
&lt;link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/css/all.min.css" crossorigin="anonymous" referrerpolicy="no-referrer" /&gt;

&lt;!-- Splash Video Container --&gt;
&lt;div id="splash-video" style="
  position: fixed;
  top: 0; left: 0;
  width: 100vw; height: 100vh;
  background: black;
  z-index: 99999;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  flex-direction: column;
  opacity:1;
  transition: opacity 0.8s ease;
"&gt;
  &lt;video id="introVideo" autoplay playsinline style="width: 100%; height: 100%; object-fit: cover;"&gt;
  &lt;/video&gt;

  &lt;!-- 按钮区域 --&gt;
  &lt;div id="btnContainer" style="
    position: absolute;
    top: 20px;
    right: -200px;
    z-index: 100000;
    display: flex;
    gap: 12px;
    opacity: 0;
  "&gt;

    &lt;button id="muteToggle" class="tech-btn"&gt;
      &lt;i id="muteIcon" class="fas fa-volume-up"&gt;&lt;/i&gt;
      Mute
    &lt;/button&gt;

    &lt;button id="skipBtn" class="tech-btn"&gt;
      &lt;i class="fas fa-forward"&gt;&lt;/i&gt;
      Skip
    &lt;/button&gt;

  &lt;/div&gt;
&lt;/div&gt;

&lt;style&gt;

/* 按钮基础样式 */
.tech-btn{
  padding:10px 20px;
  background:linear-gradient(45deg,#4facfe,#00f2fe);
  color:#fff;
  border:none;
  border-radius:30px;
  font-weight:bold;
  font-size:15px;
  cursor:pointer;
  display:flex;
  align-items:center;
  gap:8px;
  transition:all .3s ease;
  box-shadow:0 0 10px rgba(0,150,255,0.6);
  animation:glow 2.5s infinite ease-in-out;
}

/* hover效果 */
.tech-btn:hover{
  transform:scale(1.06);
}

/* 呼吸发光动画 */
@keyframes glow{
  0%{
    box-shadow:0 0 8px rgba(0,150,255,0.4);
  }
  50%{
    box-shadow:
      0 0 14px rgba(0,150,255,0.8),
      0 0 24px rgba(0,200,255,0.6);
  }
  100%{
    box-shadow:0 0 8px rgba(0,150,255,0.4);
  }
}

/* 按钮滑入动画 */
.slide-in{
  animation:slideIn 0.8s ease forwards;
}

@keyframes slideIn{
  from{
    right:-200px;
    opacity:0;
  }
  to{
    right:20px;
    opacity:1;
  }
}

&lt;/style&gt;

&lt;script&gt;

window.addEventListener("DOMContentLoaded",function(){

const video=document.getElementById("introVideo");
const muteBtn=document.getElementById("muteToggle");
const muteIcon=document.getElementById("muteIcon");
const splash=document.getElementById("splash-video");
const btnContainer=document.getElementById("btnContainer");
const skipBtn=document.getElementById("skipBtn");

/* 设备判断 */
const isMobile=/Mobi|Android|iPhone|iPad|iPod/i.test(navigator.userAgent);
const desktopVideo="PC视频";
const mobileVideo="移动端视频";

const source=document.createElement("source");
source.src=isMobile?mobileVideo:desktopVideo;
source.type="video/mp4";

video.appendChild(source);

video.muted=false;

/* 自动播放处理 */
const playPromise=video.play();

if(playPromise!==undefined){
  playPromise.catch(()=&gt;{
    video.muted=true;
    video.play();
    muteBtn.innerHTML='&lt;i id="muteIcon" class="fas fa-volume-mute"&gt;&lt;/i&gt; Unmute';
  });
}

/* 按钮滑入 */
setTimeout(()=&gt;{
  btnContainer.classList.add("slide-in");
},400);

/* 视频结束淡出 */
video.onended=()=&gt;{
  fadeOutSplash();
};

/* Skip按钮 */
skipBtn.onclick=()=&gt;{
  fadeOutSplash();
};

/* 淡出函数 */
function fadeOutSplash(){

  splash.style.opacity="0";

  setTimeout(()=&gt;{
    splash.style.display="none";
  },800);

}

/* 静音按钮 */
muteBtn.addEventListener("click",function(){

  video.muted=!video.muted;

  muteBtn.innerHTML=video.muted
  ? '&lt;i id="muteIcon" class="fas fa-volume-mute"&gt;&lt;/i&gt; Unmute'
  : '&lt;i id="muteIcon" class="fas fa-volume-up"&gt;&lt;/i&gt; Mute';

  if(video.paused) video.play();

});

});

&lt;/script&gt;</code></pre>]]></description>
    <pubDate>Sat, 24 May 2025 23:51:17 +0800</pubDate>
    <dc:creator>木木</dc:creator>
    <guid>https://www.52mtr.cn/?post=106</guid>
</item>
<item>
    <title>修复 WordPress 最大安全隐患，防止 xmlrpc.php 被扫描！</title>
    <link>https://www.52mtr.cn/?post=105</link>
    <description><![CDATA[<p>在 WPJAM Basic 的微信群里，经常有小伙伴说，在服务器的访问记录里面看到 WordPress 的 xmlrpc.php 被大量请求，比如下图：<br />
既然存在这些问题，那么最好关闭 WordPress 的 XML-RPC 服务，群里面有些小伙伴建议直接删除 xmlrpc.php 文件就好了，这样虽然可行，但是下次 WordPress 升级之后删除的 xmlrpc.php 文件又会出现，不太建议这么做。</p>
<p>最快的方法，只需在当前主题的 functions.php 文件添加下面这行代码就能关闭它：</p>
<p>add_filter('xmlrpc_enabled', '__return_false');<br />
WPJAM Basic 插件的「优化设置」也有该选项（下图圈起来的那个），直接勾选即可：</p>
<ol>
<li>Apache 可以通过在 .htaccess 文件前面添加以下代码：</li>
</ol>
<pre><code class="language-php">&lt;Files xmlrpc.php&gt;
Order Allow,Deny
Deny from all
&lt;/Files&gt;</code></pre>
<ol start="2">
<li>
<p>nginx 服务器可以添加下面的规则：</p>
<pre><code class="language-php">location ~* ^/xmlrpc.php$ {
return 403;
}</code></pre>
</li>
<li>
<p>如果以上两个方式都不好用，还可以在 WordPress 的 wp-config.php 文件最开始的地方添加：</p>
<pre><code class="language-php">if(strpos($_SERVER['REQUEST_URI'], 'xmlrpc.php') !== false){
$protocol   = $_SERVER['SERVER_PROTOCOL'] ?? '';

if(!in_array($protocol, ['HTTP/1.1', 'HTTP/2', 'HTTP/2.0', 'HTTP/3'], true)){
    $protocol   = 'HTTP/1.0';
}

header("$protocol 403 Forbidden", true, 403);
die;
}</code></pre>
</li>
</ol>]]></description>
    <pubDate>Sat, 11 Jan 2025 12:36:11 +0800</pubDate>
    <dc:creator>木木</dc:creator>
    <guid>https://www.52mtr.cn/?post=105</guid>
</item>
<item>
    <title>WordPress全站静态缓存优化插件WP2Static</title>
    <link>https://www.52mtr.cn/?post=104</link>
    <description><![CDATA[<p>这些缓存插件虽然也可以生成html的静态缓存，不过并不能做到全站所有资源的静态化缓存，而本文推荐的这个WP2Static可以实现全站脱离WordPress缓存为纯静态文件，随意丢到一个网站空间就可以运行的网站缓存插件。</p>
<h2>WP2Static介绍</h2>
<p>通过静态网站发布实现安全性和性能。一个可解决WordPress最大问题的插件。</p>
<p>继续使用WordPress来发挥最大的作用–管理内容，但是通过将站点发布为静态HTML来消除安全性和性能难题。</p>
<p>静态站点关闭了过时的WordPress，主题或插件可以打开的所有门。</p>
<p>预先生成的静态站点的性能将优于缓存插件，从而使您能够以本地速度为世界各地的用户提供服务。</p>
<p><a href="https://wp2static.com">https://wp2static.com</a></p>
<p>与WooCommerce或会员网站不兼容，但Snipcart之类的解决方案允许在静态网站上进行电子商务。</p>
<h2>特征</h2>
<ul>
<li>发布整个WordPress网站的独立静态html副本</li>
<li>删除网站上运行WordPress的明显迹象，使其对黑客没有吸引力</li>
<li>自动部署到服务器上的文件夹，ZIP文件，FTP服务器，S3，GitHub，Netlif，BunnyCDN，BitBucket或GitLab</li>
<li>通过WP Crontrol插件或点击自定义钩子安排无人值守出口</li>
<li>桌面通知会在导出完成时提醒您
<h2>好处</h2></li>
<li>保护您免受恶意攻击/恶意软件的侵害</li>
<li>通过不访问数据库或执行任何PHP代码来加速您的网站</li>
<li>允许您免费在GitHub Pages，Netlify或AWS S3，Azure等免费层上托管网站</li>
<li>允许您在CloudFront后面部署到疯狂的快速托管选项，例如S3</li>
<li>进行良好的开发-&gt;阶段-&gt;生产工作流程并与您的CI工具集成
<h2>WP2Static使用方法</h2>
<p>安装好WP2Static全站静态化插件后，在插件设置页面可以进行设置，通常情况你只需要设置一个Destination URL就可以了，然后点击生成按钮，会自动在你网站的子目录mystaticsite文件夹里面生成当前网站的纯静态化文件。<br />
在Crawling页面可以预览会生成哪些网址的静态化文件，如果你发现有遗漏的网页，可以手动添加到这里。</p>
<h2>WP2Static使用注意事项</h2>
<p>如果服务器配置较低，可能会生成出错，可以在本地电脑搭建一个网站生成。<br />
如果分页较多，可能不会生成中间页面的html文件，需要自己手动把所有分页的网址添加到生成列表或者使用WP-PageNavi的插件，在插件里设置“显示多少页数”的数字为页面数最大值，这样就可以把首页分页都生成出来。<br />
如果你网站有中文文章或者分类标签这些页面，生成后无法访问，你需要安装WordPress自动转换为英文拼音插件来把中文别名转化为拼音。<br />
如果目录页缺失，在“Deploy static website”里，选择“Subdirectory on current server”，这样就可以把网站生成到本地一个目录下，之后，在Crawling选项里，把Detection level中的三个选项都跑一边，这样的话就可以生成全部的目录页和文章页。<br />
网站安装的插件越多可能生成静态化的成功率越低。<br />
WP2Static不适合经常更新内容的网站使用。</p></li>
</ul>]]></description>
    <pubDate>Fri, 03 Jan 2025 00:22:56 +0800</pubDate>
    <dc:creator>木木</dc:creator>
    <guid>https://www.52mtr.cn/?post=104</guid>
</item>
<item>
    <title>WordPress实现全站纯静态</title>
    <link>https://www.52mtr.cn/?post=103</link>
    <description><![CDATA[<p>本篇文章实现WordPress全站纯静态，实现全部为html/cs/jss/图片文件、无php文件、无数据库、无wpadmin后台，可将生成的网站存放于静态网页托管，适合企业网站等需求。缺点是由于没有数据库和php交互，评论、搜索功能无法使用。另外也介绍了静态化搭配CDN的配置方法。</p>
<h1>为什么要开启WordPress静态</h1>
<p>使用静态主要目的有两个。</p>
<p>一个是为了减缓服务器压力。当访客请求网页浏览时，静态资源（HTML/JS/CSS/图片）不需要服务器运算，直接将静态资源原样发给访客即可。而动态资源（PHP/数据库内容）需要服务器经过运算解析后把生成的结果发给访客。很明显动态资源相比静态资源要耗费更多的服务器资源。不需要专业的测试工具，打开WordPress伪静态文章一定比纯静态文章要耗费更多的时间。</p>
<p>另一个是为了提高SEO效果。搜索引擎会对静态html结尾的URL优先索引。<br />
WordPress现有的几种静态解决方案<br />
目前基本上有三种静态解决方案。分别为伪静态、缓存静态、全站纯静态。本文详细介绍全站纯静态。其他两种静态方法较简单，网上有大篇文章介绍。</p>
<p>伪静态<br />
利用WEB软件（IIS/APACHE/NAINX等）的url rewrite功能实现WordPress伪静态。<br />
访客看似访问的网页是静态资源，实际上对于WEB服务器来说仍然是动态资源，因此对减缓服务器压力没有任何效果，只有SEO效果。</p>
<p>设置方法很简单，在WordPress后台-设置-固定链接里，选择你想要的URL格式，再到WEB软件里添加对应的rewrite规则即可（规则网上搜索一下就有，宝塔面板自带）。</p>
<h1>缓存静态</h1>
<p>缓存静态是安装WordPress的WP Super Cache插件，实现自动生成html静态资源，达到提高网站速度减少服务器压力的效果。</p>
<p>缓存静态的原理是当访客请求一个文章时，WP缓存静态插件会先判断这个文章是否有已经生成的html网页，如果有，则直接读取已生成的html网页给访客；如果没有，则先将文章生成html网页再发送给访客，之后其他的访客就可使用生成的html网页。当已生成html网页时，跳过了解析php和读取数据库步骤，可大幅提高网站速度和减缓服务器压力。</p>
<p>缓存静态的缺点是整套WordPress系统仍然运行于服务器，由于WordPress漏洞或设置不安全，仍然会有被黑客入侵的危险。</p>
<p>设置方法也很简单，安装WP Super Cache插件，开启插件的“启用缓存”和“预缓存”功能即可。详细配置可参考官方文档和网上文章。“启用缓存”功能是插件只生成被访问的html网页，并在设定时间后删除缓存的html文件。“预缓存”功能是定时自动生成全部html网页。</p>
<h1>全站纯静态</h1>
<p>全站纯静态通过WP插件生成WordPress全站静态资源，再配合资源优化插件以及CDN，就可以把全站静态资源放到云计算的对象存储、CDN源站、免费静态网页托管等web服务商，实现数量级的提升网站速度，并拥有无懈可击的安全性。</p>
<p>甚至可以在本地搭建一个WordPress平台，设计好主题、写好文章后，将生成的静态资源上传到对象存储和CDN来搭建网站。访客访问时感觉不到这不是一个真实存在于WEB服务器的WordPress。</p>
<h2>需要的WordPress插件</h2>
<p>Simply Static插件（<a href="https://cn.wordpress.org/plugins/simply-static），用于生成全站静态化">https://cn.wordpress.org/plugins/simply-static），用于生成全站静态化</a>。</p>
<p>Autoptimize插件（<a href="https://cn.wordpress.org/plugins/autoptimize），用于整合优化资源文件">https://cn.wordpress.org/plugins/autoptimize），用于整合优化资源文件</a>。</p>
<p>Simply Static插件<br />
这个插件用于生成全站静态化。在本地搭建WordPress平台，安装好插件，设置页面主要如下图<br />
<img src="https://picabstract-preview-ftn.weiyun.com/ftn_pic_abs_v3/3580ec28344ed9d68e31a8c439b4884ffc36e02c77cf5f4df049f2e94c0f0b541db71b6b84bd5fa7c2512e286183c70d?pictype=scale&amp;from=30113&amp;version=3.3.3.3&amp;fname=dadsasd.png&amp;size=750" alt="" /></p>
<p>Local Directory选项<br />
这个选项设置静态资源生成保存目录。我这里设置的是D:/soft/xampp/htdocs/public/。网站根目录是D:/soft/xampp/htdocs。</p>
<p>Destination URLs选项<br />
Use absolute URLs是使用绝对URL路径。不建议选这个，由于本地环境和云端的URL不一样，不好调试。</p>
<p>Use relative URLs是使用相对URL路径。如果设置为/abc/，假设域名是www.abc.com，则URL是www.abc.com/abc/；设置为/，则URL是www.abc.com/。建议设置为/，配合Local Directory选项，可实现生成的文件生成到public目录，而public目录就是生成的网站根目录。将public目录内的文件上传到云存储根目录，即可实现全站静态化。</p>
<p>Save for offline use是转化为离线路径。用于web服务器的网站转化为本地环境使用。</p>
<p>Delivery Method选项<br />
这个选项让你选择生成的是文件目录还是压缩包。<br />
Autoptimize插件<br />
Autoptimize插件也可在缓存静态方案中使用，效果一样。</p>
<p>Autoptimize插件用来合并压缩js/css文件、压缩html文件。</p>
<p>如果不优化，访客打开一篇WordPress文章时，会请求很多个js/css文件，而每个请求都需要单独建立http(s)连接，消耗服务器资源。如果压缩为一个js和css文件，则只需要请求一次，可减轻服务器压力。压缩html文件可以减少传输的html流量，对于CDN来说流量就是成本。</p>
<p>这是优化前和优化后的截图</p>]]></description>
    <pubDate>Fri, 03 Jan 2025 00:02:00 +0800</pubDate>
    <dc:creator>木木</dc:creator>
    <guid>https://www.52mtr.cn/?post=103</guid>
</item>
<item>
    <title>php实现页面自动跳转功能,php如何实现302跳转？</title>
    <link>https://www.52mtr.cn/?post=102</link>
    <description><![CDATA[<p>关于“php实现页面自动跳转”的问题，整理了【4】个相关介绍“php实现页面自动跳转”的解答：</p>
<p>php如何实现302跳转？<br />
302是临时重定向的意思。表示被访问页面因为各种需要被临时跳转到其他页面。</p>
<p>PHP里的302重定向非常简单，只要在返回的HTTP Response Header里添加Location字段，PHP将自动返回302状态码。</p>
<p>例如：</p>
<pre><code class="language-php">&lt;?php

header("Location: URL地址");

?&gt;</code></pre>
<p>这段代码将自动重定向到URL地址</p>
<p>注意的是，跳转不是在收到response header的时候马上进行，也就是说页面的剩余内容会被下载来之后浏览器才会跳转。新手常犯的一个错误是，在逻辑判断时对符合条件的情况进行header跳转之后，忘了在之后加上exit()，导致错误。例如，用user_login()判断用户是否进行了登录，如果未登录则跳转到登录页面。代码如下：</p>
<pre><code class="language-php">&lt;?php

if(!user_login()){

header("Location:login.php");

}

//display contents for login users.

?&gt;</code></pre>
<p>这里，容易以为header之后这段代码就结束了，没有在header之后使用exit()。后面的代码继续被执行，导致未登录用户看到了已登录用户才能看到的内容。<br />
php网页中怎么弹出新的php页面？<br />
php实现弹出新页面的方法：</p>
<p>1、使用“header(&quot;Location:&quot;.PSYS_BASE_URL.&quot;user/index&quot;);”方法实现弹出跳转；</p>
<p>2、通过“header(&quot;refresh:3;url='createTag' &quot;);”。<br />
实现网页页面跳转的几种方法(meta标签、js实现、php实现)？<br />
form表单加submit按钮，在action中写页面地址;</p>
<p>按钮onclick时间localtion. href＝跳转的地址</p>
<p>如何实现将一个网址跳转到另外一个网址？<br />
要实现网址跳转，可以通过多种方式实现。以下是几种常见的实现方法：</p>
<ol>
<li>HTML Redirect: 使用 HTML 的 meta 标签在网页头部进行重定向。
<pre><code class="language-html">&lt;meta http-equiv="refresh" content="0; url=目标网址"&gt;</code></pre></li>
<li>JavaScript Redirect: 使用 JavaScript 在网页加载时进行重定向。
<pre><code class="language-javascript">window.location.href = "目标网址";</code></pre></li>
<li>
<p>服务器端重定向：使用服务器端代码实现网址跳转，常见的服务器端语言如 PHP、Python、Java 等，可以使用相应语言的重定向函数或方法。</p>
<pre><code class="language-php">&lt;?php

 header("Location: 目标网址");</code></pre>
</li>
</ol>]]></description>
    <pubDate>Sat, 07 Dec 2024 13:10:49 +0800</pubDate>
    <dc:creator>木木</dc:creator>
    <guid>https://www.52mtr.cn/?post=102</guid>
</item>
<item>
    <title>如何修復-wordpress出現-500-internal-server-error-的解決方法</title>
    <link>https://www.52mtr.cn/?post=101</link>
    <description><![CDATA[<p>增加PHP 记忆体限制<br />
如果你的PHP 记忆体达到上限，那么有时也是导致发生500 Internal Server Error 的原因。<br />
要解决这个问题，只需要增加WordPress 的PHP Memory Limit 即可。<br />
如果这个500 Error 的错误只发生在登入WordPress 的后台页面中，那么你就可以透过以下步骤来增加WordPress 的PHP 记忆体上限，来解决这个问题:<br />
1.进入wp-config.php 档案2.添加以下程式码:define('WP_MEMORY_LIMIT','256M');3.保存设定<br />
或者，如果你是使用VPS 主机，你也可以透过修改PHP.ini档案的方式来Increase PHP Memory Limit.1.进入伺服器根目录<br />
2.修改PHP.ini 档案(如果没有，则手动建立一个空白的PHP.ini 档案)<br />
3.添加以下程式码:memory_limit=256M<br />
4.保存设定<br />
除了上述两种方式可以增加PHP Memory Limit 之外，你也可以透过修改.htaccess 档案来增加PHP 记忆体上限:<br />
1.进入伺服器根目录<br />
2.修改.htaccess 档案<br />
3.添加以下程式码:php_value memory_limit 256M<br />
以上就是常见的三种增加PHP 记忆体上限的方法，只需要挑其中一种使用即可。 如果你可以透过增加记忆体限制来解决500 Error 的问题，那么你只是暂时解决了这个问题，而非根治。最好的做法是，找出耗尽你网站PHP 记忆体的原因，如此才是正确的Debug 作法。</p>]]></description>
    <pubDate>Sat, 30 Nov 2024 11:41:00 +0800</pubDate>
    <dc:creator>木木</dc:creator>
    <guid>https://www.52mtr.cn/?post=101</guid>
</item>
<item>
    <title>HTML发送邮件链接</title>
    <link>https://www.52mtr.cn/?post=100</link>
    <description><![CDATA[<p>大家点击我的博客主页详细资料里的邮箱就可以给我发邮件了，那么这个效果是怎么实现的呢？</p>
<ol>
<li>简单的链接
<pre><code class="language-html">&lt;a href="Mailto:邮箱"&gt;给我发邮件&lt;/a&gt;</code></pre></li>
</ol>
<p>这样会调启系统默认的邮件程序发送给xxx@163.com，并且收件人那里已经填上了我邮箱的地址。</p>
<ol start="2">
<li>复杂的链接<br />
代码：
<pre><code class="language-html">&lt;a href="Mailto:xxx@163.com?CC=xxx@163.com&amp;BCC=xxx@163.com&amp;Subject=Hello&amp;Body=你好"&gt;给我发邮件&lt;/a&gt;</code></pre></li>
</ol>]]></description>
    <pubDate>Sun, 27 Oct 2024 19:30:00 +0800</pubDate>
    <dc:creator>木木</dc:creator>
    <guid>https://www.52mtr.cn/?post=100</guid>
</item>
<item>
    <title>WordPress自动更新版本功能如何关闭？</title>
    <link>https://www.52mtr.cn/?post=99</link>
    <description><![CDATA[<p>WordPress版本会不定期维护更新，以提高网站安全保护。它后台带有自动更新功能，有时自动升级到最新版本后，发现有些WordPress主题或插件出现了兼容性问题，导致部分功能不可用。所以，我们一般会关闭WordPress版本自动更新功能，选择手动更新。</p>
<p>WordPress关闭自动更新功能的常用方法</p>
<p>方法一、使用代码实现</p>
<p>修改WordPress程序根目录下的全局配置文件wp-config.php，在最后添加下面代码。</p>
<pre><code class="language-php">/** 关闭WordPress自动更新升级 */
define('AUTOMATIC_UPDATER_DISABLED', true);</code></pre>
<p>方法二、通过Easy Updates Manager插件实现</p>
<p>前往WordPress官网下载Easy Updates Manager 插件并上传安装或直接在后台插件中在线安装并启用，然后点击后台的仪表盘 &gt;&gt; Updates Options（更新选项）即可进行具体的设置。</p>
<p>1、常规设置。这里我们可以进行统一设置，比如禁用所有的更新，或者针对 WordPress 版本、WordPress 插件、WordPress 主题、WordPress 翻译进行启用/禁用自动更新，手动更新和禁止更新等操作。</p>
<p>2、插件选项。可以针对某一款 WordPress 插件进行操作，如允许或禁止该插件更新。</p>
<p>3、主题选项。可以针对某款 WordPress 主题进行操作，如允许或禁止该主题更新。</p>
<p>4、日志选项。这里可以清楚看到具体是从什么版本升级到什么版本，升级日期是哪天，如果发现因为某个插件或主题更新有问题，及时回滚到上一个版本就行。</p>
<p>以上是关闭WordPress自动更新版本功能的常用方法介绍，如果我们不想启用自动更新功能，则可选择其中一种方法来禁用自动更新。</p>]]></description>
    <pubDate>Wed, 11 Sep 2024 20:17:00 +0800</pubDate>
    <dc:creator>木木</dc:creator>
    <guid>https://www.52mtr.cn/?post=99</guid>
</item>
</channel>
</rss>