搜索

当前位置:首页 > 全栈分享 > 帝国cms > 正文

phpcms转帝国cms后原所有动态链接跳转到首页的解决办法

发布时间:2019-06-07 23:29:43作者:魏义齐阅读:()

本文为博主原创文章,未经博主允许不得转载。

最近把博客程序由phpcms转为帝国cms,想着两个程序的动态规则完全不一致,原程序的动态链接肯定是404,但是经测试所有动态链接都跳转到了首页,也就是所有动态链接的状态码是200,那么我提交的所谓死链也就不会被百度删除了。

出现这个问题的原因是两个程序的首页都是index.php,phpcms的index.php后面加了参数,而帝国cms的index.php后面没做什么判断处理,所以打开原程序的所有动态链接都会跳转到首页,解决思路是在index.php中增加代码,获取参数进行判断,然后输出404状态,具体步骤如下:

第一步:把首页状态改为动态,静态首页index.html会被删除,取而代之的是index.php,我们就在这个里面写代码。

第二步:获取参数,输出404

举一条phpcms动态链接的例子:https://www.weiyiqi.net/index.php?m=content&c=index&a=show&catid=14&id=4,在index.php中添加如下代码:
if ( is_array( $_GET ) && count( $_GET ) > 0 ) //先判断是否通过get传值了
{
	if ( isset( $_GET[ "m" ] ) && isset( $_GET[ "c" ] ) && isset( $_GET[ "a" ] ) ) {
		header( "HTTP/1.1 404 Not Found" );
		header( "Status: 404 Not Found" );
		$html = <<<EOF
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>404 Not Found</title>
<link type="text/css" rel="stylesheet" href="https://www.weiyiqi.net/skin/weiyiqi/css/404.css">
</head>

<body>
<div><img src="https://www.weiyiqi.net/skin/weiyiqi/images/404.gif"></div>
<p><a href="http://www.weiyiqi.net/">返回首页</a></p>
</body>
</html>
EOF;
		echo $html;
		exit;
	}
}
其中的html代码是自定义的404页面,php代码就不解释了,能看懂的一眼就看懂了,看不懂的直接复制。

第三步:在web.config中配置404,添加如下代码:
<httpErrors errorMode="Custom">
  <remove statusCode="404" />
  <error statusCode="404" path="404.html" responseMode="File" />
</httpErrors>
这段代码加在<system.webServer></system.webServer>里,跟<rewrite></rewrite>是并列关系,别加错了位置。

第四步:iis配置(检查)

打开iis→点计算机名称→点右侧的查看网站→站点上双击→错误页→点404状态码进行编辑,如下:
编辑404状态码
一般的,web.config中配置后iis会同步,但还是要检查一下。

本文标签:,您可以阅读与「」相关的所有文章

魏义齐全栈技术交流:魏义齐全栈技术交流

上一篇:帝国cms小问题集合:https登录后台空白、彻底更换域名、批量替换字段值传递参数有误下一篇:帝国cms tags详解(目的和意义、布局与优化、不同服务器的伪静态实现和在首页与文章页调用)

赞助本站

原创不易,您的赞助就是博主更新的动力!

赞助本站可在赞助光荣榜留下外链信息,支付宝扫此二维码可领红包