saber酱的抱枕

Fly me to the moon

10/24
10:17
学习

解决WordPress中文tag分页时的乱码问题

其实,本站自从六月份换到了windows 服务器上,中文tag的分页就一直是乱码。

比如点击底部的“福利”tag,打开第一页是正常的,但是底下的页码已经是乱码了,导致点击页码的时候都是404页面。

404 iis IIS Chinese Tag Permalink windows wordpress 中文tag 乱码 插件

页码里的“福利”已经变成了乱码。(但是在搜索框搜索中文tag可以正常出结果,奇怪。只有页码里的中文乱码了)

这个问题百度一下有一堆结果,无非是说WordPress是utf-8编码,iis是gbk编码,所以要转码。

道理我都懂,但是我照着网上的教程尝试了各种办法,改web.config,改php.ini,改class-wp.php,改rewrite.php,折腾的欲仙欲死。教程上说这么这么改就可以了,但我这里始终就是没变化,我也很无奈。

最后我用了权宜之计,使用JavaScript在前端解决了,办法是把乱码的地方再替换成正确的中文。但是这样有弊端,虽然访客感觉不到异常,但是对于搜索引擎爬虫来说是无效的,它们抓取到的链接仍然是后台输出的错误链接。

就这样过了几个月,今天我又从function.php开始折腾,最后又失败了。不甘心的我又去网上搜索,找到了一个以前没见到过的办法:

安装IIS Chinese Tag Permalink 插件,这是一个神奇的插件,五年没有更新,但是仍然可以正常工作,并且解决了这个困扰我很久的问题。感谢作者~

ps:我发现这个插件有时候会导致tag后面多出一个斜杠"/",这样tag后面是双斜杠。不知道这是副作用还是功能设计。还好这个多出的斜杠不会影响页面的打开,可以无视。

解决WordPress中文tag分页时的乱码问题

07/22
13:49
软件

解决了使用https加www访问本站的错误

https://www.saber.love/ (原始输入)
https:/ (期望的最终结果)

最近不止一个人跟我说访问本站页面出现了404,后来我深♂入了一下,发现出现这些404的情况是上面原始输入里面的情况,url是https协议带www的。

但本站以前设置过把www的转换成不带www的规则,我以为这样的输入应该会被转换为下面的正确形式,但是试了一下果然不行。我一开始以为是重定向规则或者url重写规则出了问题,最后才想起来域名解析这一块。我去IIS里看了看,之前没绑定https协议下的www.saber.love,绑定上就好了。

话说访问本站没必要加www,少敲点字符可以节约生命(+1s)。

解决了使用https加www访问本站的错误

06/7
12:01
软件

IIS服务器访问mp4等视频文件时发生404错误

最近一个网站上要放mp4视频,我本地测试时用的是WAMP服务器,没有问题,上线到服务器的IIS6里面之后却发生了错误,视频打不开,状态码404。

奇哉怪也,我再三确认路径没有错,后来搜了一下才知道,IIS里对于不支持的文件类型,要手动添加其MIME信息。

在该网站上右键 → 属性 → HTTP头 → MIME类型,添加.mp4文件的MIME类型即可(video/mp4)。

 404 iis MIME mp4 视频

嗯,箭头就是画的这么奔放。

IIS服务器访问mp4等视频文件时发生404错误

03/24
08:00
学习

JavaScript处理加载失败的图片

最近我修改某个网站,删除了很多上传的图片,但是又懒得去文章里一篇篇去掉出错的图片(任务量太大),所以就想到了用JavaScript在网页上找出出错的图片,并将其隐藏。

一开始我自己尝试了写了一些代码试试,主要是使用img元素的onerror事件。虽然代码在demo中达到了预期效果,但是加在实际页面里却不生效。对此我有一些猜测,但尚不能确定准确原因,后来还是用谷歌搜了现成的代码。

document.addEventListener("error", function(e){
    var elem = e.target;
    if(elem.tagName.toLowerCase() === 'img'){
    	// 如果引发error事件的元素是img元素,就进行处理
        elem.style.display="none";		//隐藏该图片
    	// elem.src = "/img/hint.jpg";	//或者替换为其他图片
    }
}, true /*指定事件处理函数在捕获阶段执行*/);

将这份代码加在网页开头(所有img元素之前)即可。

参考:《以全局监听的方式处理img的error事件》

JavaScript处理加载失败的图片

07/18
08:09
学习

php获取url的状态码

function http_status($url) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, 1);
    curl_setopt($ch, CURLOPT_NOBODY, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_TIMEOUT, 5);
    curl_exec($ch);
    $status = (int)curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    return $status;
}

可以用这个函数来获取url请求的状态码,判断404很方便→_→

不过如果测试p站图片url的话,还得加上refer信息来绕过防盗链。

一个下载器搞得我找了好多php的东西,心好累。

php获取url的状态码

12/31
09:30
学习

js判断url是否能够访问

我想用js检查网站地图文件里的网址是否都正确,于是找了js判断url是否能够访问的方法。原理是利用jQuery的ajax方法,根据网页状态码来判断网页能否打开。

//判断一个url是否可以访问
function IsLoad(_url){
  	$.ajax({
     	url:_url,
      	type:"get",
     	success:function(){
	        //说明请求的url存在,并且可以访问
		    console.log('请求的url可以访问');
     	 },
     	statusCode:{
	        404:function(){
	         	//说明请求的url不存在
			    console.log('请求的url不可访问');
	        }
	     }
    });
}
//调用
IsLoad("http://www.saber.love/music/");

Read More →

js判断url是否能够访问

08/29
08:00
学习

为WordPress制作404页面

我用的这个主题对404的处理不太好,它不经过任何提示,直接展示首页内容(没有跳转过程,所以地址栏的链接还保留着错误的链接)。所以我今天搜索了一番,做了自己的404页面。

本文内容适用于WordPress+Apache。

首先建立个404.php的文件,我的模板内容如下:

<?php get_header(); ?>
<div id="ctn">
    <div id="content">
        <div class="post_ctn">
        	<hgroup class="post_hctn">
        		<div class="post_h_l">
        			<h2 class="post_h"><a href="">Error:404 Not Found</a></h2>
        		</div>
        	</hgroup>
            <div class="post_t">
                <p><img src="/f/404.jpg" alt="404"></p>
                <p>诶?竟然给老娘弄出404?</p>
                <p style="font-weight: bold;font-size:20px;">如果您是从搜索结果点击进来看到的404,<a href="" id="toRight" style="font-weight: bold;text-decoration: underline;">您可以点击这里到达正确的页面</a></p>
                <script>
                if (location.href.indexOf(".html")==-1) {
                    $("#toRight").attr("href",location.href.substring(0, location.href.length-1).concat(".html"));
                };
                </script>
                <p>访问本站出现404,一般是因为以下原因:</p>
                <p>本站启用固定链接之后,搜索引擎未全面更新收录。所以有时候搜索结果里的文章链接是错误的。</p>
                <p>如果上面的链接仍然不正确,您可以搜索您需要的内容:</p>
                <?php get_search_form(); ?>
                <p>您也可以<a href="<?php echo esc_url( home_url( '/' ) ); ?>" title="<?php echo esc_attr( get_bloginfo( 'name', 'display' ) ); ?>" rel="home">访问首页</a>,或给我<a href="/%e7%95%99%e8%a8%80#comment">留言</a>,告诉我问题的详细情况。</p>
            </div>
        </div>
    </div>
</div>
<?php get_sidebar(); ?>
<?php get_footer(); ?>

我用了文章页面的模板,把文章区域添上了自己的内容。如果你和我的模板不一样,参考主体部分就行了。

为了便于备份,我把404.php放到了模板目录中。你也可以放到网站根目录里。

到这里,你可以输入一个错误的网址试试,如果能出现404页面就OK了。如果不能,则需要编辑.htaccess文件,在WordPress规则的结束标记之前插入404指示:

# BEGIN WordPress
<IfModule mod_rewrite.c>
//......
</IfModule>
ErrorDocument 404 /wp-content/themes/clearisionchild/404.php
# END WordPress

注意,不要插入到其他规则(如上例中的IfModule规则)之中。

为WordPress制作404页面