一 : 百度收录主域名和后面带index.html/index.php网页解决方法
我是一小白,之前网站是由网站公司的人在搭理,后来自己想打理,就把源码自己拿了过来。
但是突然有一天发现我的网站www.oruifine.com的百度快照显示为2015-2-04,但是通过站长工具查询却显示快照时间为2015-2-17.然后我就site了我的网站,发现第一页是不带index.html的主域名,收录时间为2015-2-14,第二页出现了主域名带index.html的百度快照,时间是2015-2-17.而且之前权重是1,现在变为0了,关键词排名也下降了。
百度了同时收录主域名和带index.html,发现很多人都在问这个问题,有人说这种情况会导致网站首页分权,不利于优化,也有人说这个没什么关系。但是看着就是不爽,所以我就到处百度查看解决方法。
一:空间没有设置默认首页,解决方法就是把index.html设置为默认首页,我的空间是万网的,默认首页也是设置为index.html
二:在其他网站发了大量带index.html的外链,这个我也domain了我的网站,我的外链全是主域名,没有带index.html
三:网站结构问题,首页没有统一,网上大神给出的方法就是要统一首页网址,有首页的地方最好用绝对路径,直接把主域名写上去。(最开始我绕过了这条,最后折腾了几天发现还是这个问题)
四:就是直接用robots把带index.html给屏蔽掉
五:用301跳转,把index.html跳转到主域名(因为我是小白,这个方法我实在不会)
以上几条解决方法可以参考 (如何避免网站收录带index.html的首页导致权重分散)
下面我要说的是我如何查出问题,并解决的,因为网上很多方法只是说了个大概,没有详细的步骤,对于我们这种小白,我觉得还是能给出详细步骤为好。
首页我用到的工具有Xenu 死链检测工具,这个直接百度搜,到处都能下载。
前面说了,出现这种同时收录主域名和带index.html情况,网上的解决方法就那么几条,所以我们也只能一条一条去尝试。
当然我的默认首页是已经设置过了,在浏览器输入www.oruifine.com 带了index.html也会自动跳转到主域名,所以这条我直接跳过。
然后我就用Xenu查看我网站全部链接,因为是企业官网,所以内部链接不多,查找其他还是比较方便,如果你的网站很大,这个工具适不适合我就不知道了。
打开Xenu,点击 “文件” –“检查网址”,然后在弹出的输入框中输入你的主域名,再点确定,等待显示100%时就完成了。
PS:完成后会提示是否生成报告,我是选择否;另外这个工具非常好用,还可以用来整理网站链接,查询你的哪些页面被百度收录了。
然后点击“编辑”—“查找”,输入 “index.html”,点击查找下一个,这样以此查看是否有主域名带index.html,如果你查出确实有这条链接,那么你的就容易解决了。 直接右键点击这条链接,再点击属性选项,就会弹出一个对话框,它会显示你这条链接是在哪个或者哪几个页面出现,然后你找到这几个页面改掉里面的带index.html链接就可以了。(打开问题页面,然后直接右键页面内容选择查看源文件,就能显示网页代码,再搜索index.html就可以定位到问题链接)。
我反复几次搜索了我的网站所有页面,也没有发现存在主域名带index.html,当时就给懵了。后来实在没办法,我就只好robots禁止了index.html。过了几天发现有人说robots禁止可能导致主域名被禁,没办法我只好继续查找解决办法。
重点来了:一次偶然机会,我打开了一个404页面,我的404页面是网上下载的源码,当我点击回到主页时,发现出现了index.html。所以我意识到这个404页面应该就是导致百度收录我的index.html的根源(因为网站做了一个大改动,之前被百度收录的产品页面全删除,重新发布了新的页面,这样就导致了非常多的404页面,而且之前的404页面源码有问题,虽然显示是404,但是用站长工具检测返回值都是200).
PS:如果有遇到静态网404页面设置OK,显示OK,但是返回值是200的,可以查看下我的404页面,我的方法就是把404.html改成404.asp,这个方法也是偶然机会查到的,希望有机会帮助遇到同样问题的朋友。
找到问题所在后,我又把另外一个问题网站 的404页面改掉了,之前这个网站也是主域名迟迟不更新,但是我改掉404的index.html后,不到一周百度快照就更新了。
二 : php和json_encode 中文解决方法
json_encode 中文解决方法
json 是一个很好的数据结构现在已经广泛用在网络数据传输上
php 自身待了两个和json 相关的函数
json_encode 和 json_decode
这两个函数的具体用法 网上有很多相关的文章
本文主要介绍 用json_encode 时 中文无法转换的解决方案
本文假设 文件所用的编码为gb2312;
先写出所需的数组
<?php
$json = array (
0 =>
array (
'id' => '13',
'name' => '乒乓球',
),
1 =>
array (
'id' => '17',
'name' => '篮球',
)
)
?>
如果直接用函数json_encode
<?php
echo json_encode($json);
?>
结果为:
<?php
[{"id":"13","name":null},{"id":"13","name":null}]
?>
可以看到汉字没有被转义 都为null
这是因为json仅仅转义encoding编码
故上面语句应该先转换编码
<?php
foreach ($ajax as $key=>$val)
{
$ajax[$key]['name'] = urlencode($val['name']);
}
echo json_encode($json);
?>
客户端js代码
<script type="text/javascript">
function getsort(obj)
{
$.ajax(
{
type : "GET",
url : "<?=$this->baseUrl?>/index/getajax",
data : "c=" obj.value,
success : function(json)
{
var json=eval(json);
var html = '<select>';
$.each(json, function(k)
{
html = '<option value="' json[k]['id'] '">' decodeURI(json[k]['name']) '</option>';
});
html ="</select>";
$('#sort').html(html);
}
}
)
}
</script>
用上面的代码js会报错 说编码不符合标准
原因是因为js 中decodeURI 仅仅支持utf8 转码
所以
php
代码应该为下面的代码
<?php
foreach ($ajax as $key=>$val)
{
$ajax[$key]['name'] = urlencode(iconv('gb2312','utf-8',$val['name']));
}
echo json_encode($json);
?>
三 : PHP整数取余返回负数的相关解决方法
PHP语言虽然功能强大,但并不代表其没有缺点,在编写代码的过程中未免会遇到一些让人头痛的问题。下面我们将为大家介绍有关PHP整数取余返回负数的解决办法。
我们先来看个例子.
代码如下:
$res=1624479(www.61k.com)9483;
echo$res%9999999;
//输出结果为-5069794,正确的结果应该是4801107
其实这也算上PHP一个BUG吧.最主要是PHP是个弱类型语言.他内置了机器来判断用户的类型.
但是机器毕竟是机器.也有判断出错的时候.就像上面.所以这时候我们就需要人工干预下.
所以我就想到要用下面的方法来解决PHP整数取余返回负数的问题.
代码如下:
$res=floatval(16244799483);
var_dump($res%9999999);
我们看到结果还是错误的-5069794.
但是值得注意的是返回是一个int类型的.
详细思考了一下.PHP整数取余返回负数的问题是这样处理的.
PHP取余默认为整数的.
而且当你定义$res=16244799483;
其实就已经溢出了.所以要加上强制类型转换.变成float类型.
但是这样还不够.因为%这个取模计算还是针对整数的.
所以我们需要一个函数fmod.是针对float类型的.
所以最终PHP整数取余返回负数的解决办法为:
代码如下:
$res=floatval(16244799483);
var_dump(fmod($res,9999999));
这样我们就解决了PHP整数取余返回负数这个问题
四 : 纯基于PHP的单点登陆
【引自纯月的博客】Discuz有一个通行证,类似于单点登陆。不过我觉得单点登陆最好应该是一个独立的程序,和CAS一样。由于所有的程序都是PHP的,所以就做了一个简单的单点登陆。借用了一下discuz的加密方法。
用户有以下几种情况会直接访问本系统:
1、用户直接访问passport,希望登陆
2、用户从passport_app上点击登陆按钮转过来的
3、用户从passport_app1转到passport_app2时候,passport_app2转过来的
4、用户直接输入访问passport_app的URL
2 3 4或者有referer,或者有fromurl的参数
====
1 使用通行证的应用程序上面的登陆按钮全部指向下面的链接:http://localhost/passport/login.php
2 如果用户已经登陆了,转到5
3 如果用户还没有登陆
转到一个登陆页面,要包含参数:
用户名,密码,fromurl(预处理过的refer)
提交到login.php?op=login
4 验证通过以后,设置自身的session或者cookies
5 根据用户http头里面的refer得到来源地址。
5.1 如果没有来源地址则显示本passport登陆成功页面,上面列出所有的passport应用
5.2 如果有refer,则跳回到refer的地址,即到6
6 转到通行证应用的passport_login.php页面,传递的参数包括:
◆$userinfo 一个数组,包含了用户名,角色,组等其它信息,一般不需要包含密码
◆$fromurl
◆$verify md5($auth.$fromurl) 保证用户信息没有被篡改
===============================
7 passport_login.php
首先检查参数有没有被改变
然后取出参数内的user_id
验证通过以后,
如果user_id在系统内存不做处理
如果不存在,则根据编码添加该用户
最后设置自己的session/cookies,然后跳转到fromurl
===============================
通行证的密匙,可以自行填写英文,可包含任何字母及数字,长度大于 10 字节
=============================
代码如下:
|
客户应用检验单点登陆的方法如下:
|
【相关文章】
五 : PHP使用Google Plus Oauth登录(1)
前阵子Google+已经发布了OAuth的应用程序编程接口,现在他们只提供用户活动和循环数据。我已经使用PHP通过Google+数据简单实现了一个称为用户身份验证的登录系统。试试这几乎就像twitter登录系统,我希望未来Google+会释放更多选项。
使用Google Plus Oauth登录
第一步
点击这里添加或者注册你的域名。
添加或者注册你的域名
第二步
通过HTML文件上传或包括META标签来验证您的域名所有权。
通过HTML文件上传或包括META标签来验证您的域名所有权。
第三步
谷歌将会提供你OAuth用户密钥和秘密密钥。
谷歌将会提供你OAuth用户密钥和秘密密钥
第四步
在Oauth控制台创建客户端ID(Client ID)。
在Oauth控制台创建客户端ID(Client ID)
在Oauth控制台创建客户端ID(Client ID)
第五步
应用的Oauth Client ID和客户端密钥(client secret)。
应用的Oauth Client ID和客户端密钥(client secret)
下面来看一下我们的程序文件。
PHP使用Google Plus Oauth登录(1)_google plus是什么
Config.php
在这里,你必须配置OAuth应用密钥和用户密钥。
- //OAuth2Settings,youcangetthesekeysathttps://code.google.com/apis/consoleStep6keys
- 'oauth2_client_id'=>'AppClientID',
- 'oauth2_client_secret'=>'AppClientSecret',
- 'oauth2_redirect_uri'=>'http://yoursite.com/gplus/index.php',
- //OAuth1SettingsStep3keys.
- 'oauth_consumer_key'=>'OAuthConsumerKey',
- 'oauth_consumer_secret'=>'OAuthConsumerSecret',
gplus_login.php
google+的登录系统。
- <?php
- require_once'src/apiClient.php';
- require_once'src/contrib/apiPlusService.php';
- session_start();
- $client=newapiClient();
- $client->setApplicationName("9lessonsGoogle+LoginApplication");
- $client->setScopes(array('https://www.googleapis.com/auth/plus.me'));
- $plus=newapiPlusService($client);
- if(isset($_REQUEST['logout'])){
- unset($_SESSION['access_token']);
- }
- if(isset($_GET['code'])){
- $client->authenticate();
- $_SESSION['access_token']=$client->getAccessToken();
- header('Location:http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']);
- }
- if(isset($_SESSION['access_token'])){
- $client->setAccessToken($_SESSION['access_token']);
- }
- if($client->getAccessToken()){
- $me=$plus->people->get('me');
- $_SESSION['access_token']=$client->getAccessToken();
- }else
- $authUrl=$client->createAuthUrl();
- if(isset($me)){
- $_SESSION['gplusdata']=$me;
- header("location:home.php");
- }
- if(isset($authUrl))
- print"<aclass='login'href='$authUrl'>GooglePlusLogin</a>";
- else
- print"<aclass='logout'href='index.php?logout'>Logout</a>";
- ?>
home.php
这里包含了将google+的session信息插入user数据表的PHP代码。
- <?php
- session_start();
- if(!isset($_SESSION['gplusdata'])){
- //Redirectiontohomepage
- header("location:index.php");
- }else{
- $me=$_SESSION['gplusdata'];
- echo"<imgsrc='{$me['image']['url']}'/>";
- echo"Name:{$me['displayName']}";
- echo"GplusId:{$me['id']}";
- echo"Male:{$me['gender']}";
- echo"Relationship:{$me['relationshipStatus']}";
- echo"Location:{$me['placesLived'][0]['value']}";
- echo"Tagline:{$me['tagline']}";
- print"<aclass='logout'href='index.php?logout'>Logout</a>";
- }
- ?>
下面附上使用Google Plus Oauth登录的示例源码:下载点这里
原文链接:
本文标题:php单点登录解决方案-百度收录主域名和后面带index.html/index.php网页解决方法61阅读| 精彩专题| 最新文章| 热门文章| 苏ICP备13036349号-1