WORDPRESS您没有足够的权限访问该页面解决方法

解决方法

1.如果修改了wp-config.php文件中的前缀名和数据库的表名,数据库中需要做同步;

表名“前缀名_options”和表名“前缀名_usermeta”将”wp_”前缀修改为新的前缀。
表名“前缀名_options”中“wp_user_roles”要修改为“新前缀名_user_roles”。

在表“前缀名_usermeta”,修改的地方比较多,分别把 wp_capabilities,wp_usersettings,wp_user_level,wp_usersettingstime和 wp_autosave_draft_ids修改为对应的“前缀名_capabilities”等。

网上大部分是修改表前缀的教程,数据库没有修改过表前缀所以应该不是这个问题,检查数据库权限修改修复。

将wp_usermeta表中
user_id填写管理员的ID
wp_capabilities字段值修改为a:1:{s:13:”administrator”;b:1;}
wp_user_level值修改为10

保存后后台恢复访问。

WordPress 关闭多站点模式

开始之前,你要备份整个数据库和所有文件,然后想办法将主站点以外的所有站点的恢复到其他地方,或者分别转到单站点模式。在这里暂时不介绍这个步骤,但是你一定要自己做好!!建议先阅读 WordPress 开启多站点(含Apache和Nginx伪静态规则),因为很多步骤都是反过来的。

1、禁用所有插件,删除主站点以外的所有站点(记得备份或迁移这些站点,删除操作将会删除相关的数据)

2、删除之前添加到 wp-config.php 用来开启多站点的配置代码(类似以下代码:)

define('WP_ALLOW_MULTISITE', true);
 
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', true);
define('DOMAIN_CURRENT_SITE', 'yourdomain.com');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);

这时登录后台你会发现已经回到了单站点模式

3、清除多站点的伪静态规则:如果是Apache环境,请删除之前添加到 .htaccess 的规则代码;如果是 Nginx环境,请删除添加conf配置文件的代码。具体的请查看之前的 WordPress 开启多站点(含Apache和Nginx伪静态规则)  。访问网站后台,重新设置固定链接结构。

4.开启所需插件,到这里应该可以恢复主站点的正常访问了。但还是建议 登录 phpMyAdmin 删除多余的数据库表:

  • wp_blogs
  • wp_blog_versions
  • wp_registration_log
  • wp_signups
  • wp_site
  • wp_sitemeta
  • 以及 wp_users 下的 spam 和 deleted 字段

注:这里举例的是默认的数据库前缀 wp_ ,请根据自己的实际数据库前缀操作。

删除前面6个数据库很简单,直接选中,然后删除即可:

uninstall-wordpress-multisite-wpdaxue_com

不会操作 phpMyAdmin 的,请先阅读 phpMyAdmin教程

删除 wp_users 下的 spam 和 deleted 字段,需要进入到 wp_users,然后执行 SQL 命令。

删除 spam 字段:

1
2
ALTER TABLE wp_users 
DROP COLUMN spam

删除 deleted 字段:

1
2
ALTER TABLE wp_users 
DROP COLUMN deleted

关于删除或添加某个数据库表的字段,可参考 http://www.w3school.com.cn/sql/sql_alter.asp

uninstall-wordpress-multisite-2-wpdaxue_com

到这里,一切操作OK!

from:http://www.wpdaxue.com/uninstall-wordpress-multisite.html

Nginx:加强SSL安全等级

在配置之前,我们还需要生成一个密钥,SSH 登录 VPS 后运行以下命令,会在当前目录生成名为 “dhparam.pem” 的密钥文件,备用。

openssl dhparam -out dhparam.pem 2048

将将两个证书和这个生成的pem文件都保存在了 /root 文件夹,现在我们切换到路径 /usr/local/nginx/conf/vhost ,打开虚拟主机对应的配置文件,例如 “roov.org.conf” ,在 server 区段增加以下内容:

listen 443 ssl;

ssl on;

ssl_certificate /root/roov.org.crt;

ssl_certificate_key /root/roov.org.key;

ssl_ciphers “EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH”;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

ssl_prefer_server_ciphers on;

ssl_session_cache shared:SSL:10m;

add_header Strict-Transport-Security “max-age=63072000; includeSubdomains; preload”; # HSTS

add_header X-Frame-Options DENY;

ssl_dhparam /root/dhparams.pem;

add_header X-Content-Type-Options nosniff;

ssl_session_tickets off; # nginx >= 1.5.9

ssl_stapling on; # nginx >= 1.3.7

ssl_stapling_verify on; # nginx => 1.3.7

resolver 8.8.8.8 8.8.4.4 valid=300s;

resolver_timeout 5s;

其中,”ssl_certificate” 后填写 crt 文件所在路径,”ssl_certificate_key” 后填写 key 文件所在路径,该两文件由沃通提供。”ssl_dhparam” 后填写此前生成的 “dhparam.pem” 文件路径。保存后重启 Nginx 即可生效。在开启 HTTPS 之后 Nginx 负载会比之前略高,不过对于大多数博主而言是感受不到的。

如果需要强制开启 HTTPS ,可以将原 server 区段 “listen 80;” 前添加#变为 “#listen 80;” ,在末尾追加新的 server 区段。内容如下:

server {

listen 80;

server_name roov.org;

rewrite ^(.*)$ https://$host$1 permanent;

}

即可实现强制跳转HTTPS。配置完成后可以到 SSL Labs 测试 SSL 强度,不出意外应该是A+评级。

2015年6月1日发布 LNMP 1.2 一键安装包国内下载

下载版:http://soft.vpser.net/lnmp/lnmp1.2.tar.gz (115KB)
MD5:75429551c2614e298e6df5ccda0d3968
完整版:http://soft.vpser.net/lnmp/lnmp1.2-full.tar.gz (303MB)
MD5:9fda60bd8d699ec53c16545af6c16360
国内下载地址:
https://api.sinas3.com/v1/SAE_lnmp/soft/lnmp1.2-full.tar.gz 下载时wget需要加–no-check-certificate参数
http://lnmp.qiniudn.com/lnmp1.2-full.tar.gz
http://lnmporg.b0.upaiyun.com/lnmp1.2-full.tar.gz

LNMP 1.2对脚本进行重写优化,使用lnmp进行大部分的管理任务、使用upgrade.sh进行程序的升级、使用addons.sh进行组件的安装和卸载。同时增加了诸多实用脚本。
安装前建议使用screen,执行:screen -S lnmp 后,执行:wget -c http://soft.vpser.net/lnmp/lnmp1.2-full.tar.gz && tar zxf lnmp1.2-full.tar.gz && cd lnmp1.2-full && ./install.sh {lnmp|lnmpa|lamp}

LNMP状态管理:lnmp {start|stop|reload|restart|kill|status}
LNMP各个程序的状态管理:lnmp {nginx|mysql|mariadb|php-fpm|pureftpd} {start|stop|reload|restart|kill|status}
虚拟主机管理:lnmp vhost {add|list|del}
数据库管理:lnmp database {add|list|del}
FTP用户管理:lnmp ftp {add|list|del}

更新记录
2015年6月1日发布LNMP 1.2

完全重写优化安装脚本、升级脚本及组件安装等大部分脚本;
状态管理、虚拟主机管理、FTP管理及数据库管理全部采用lnmp命令替换,去掉/root/vhost.sh和/root/lnmp脚本;
Nginx、MySQL/MariaDB、PHP的升级脚本整合为upgrade.sh;
缓存、加速、imageMagick、ionCube等的安装卸载采用addons.sh进行;
增加SSH防护工具DenyHosts、Failban安装脚本及DenyHosts被封IP删除脚本;
增加新的备份脚本backup.sh;
支持的Linux发行版:CentOS 5-7、RHEL 6-7、Fedora 20-21、Aliyun、Debian 6-8、Raspbian、Ubuntu 10.10-15.04;
支持ARM平台,Raspberry Pi已测试;
MySQL安装时可选5.1.73、5.5.42、5.6.23,MariaDB可选5.5.42、10.0.17;
PHP安装时可选5.2.17、5.3.29、5.4.41、5.5.25、5.6.9;
安装时增加内存优化jemalloc或gperftools;
Apache安装时可选2.2.29或2.4.12;
Apache日志统一到/home/wwwlogs/下;
更新Nginx至1.8.0;
更新Zend Guard Loader至支持PHP 5.6;
更新phpMyAdmin至4.0.10.10、4.4.7;
更新memcached脚本,php-memcache或php-memcached可选;
Nginx配置文件进行了调整,启用php和pathinfo采用include方式,默认启用spdy,增加ssl范例配置;
PHP启用pear、pecl,可以直接使用该命令安装php扩展或模块;
等诸多小的更新及调整;
2014年6月13日修复redis phpredis未安装;

WordPress的全站Ajax加载(四)完整代码篇(完结)

最近发现小伙伴们对ajax加载比较感兴趣,我之前也写了三篇转门介绍Ajax,自以为已经结束了 写的也比较清楚了。有点懒同学给我提了建议“得把读者都当成小白来看待,不然估计还看不懂”。此文接受建议而出,不过个人还是觉得小伙伴们不要太过把自己当小白,还是要多学会思考总结。本人以前也是小白一个 学的也不是编程。好了 废话不多说 直接进入主题。

这篇部分代码是本人正在使用的代码摘录而出,使用了html5的API来控制历史记录。代码为ajax的核心代码,没有ajax操作时候的一些特效(内容部分会有个简单的半透明渐变处理)。如果你的主题文章部分的DIV是 #content的话 应该可以直接拷过去就用。我说的是应该。

//全局变量
var ajaxBinded = false;
jQuery(document).ready(function() {
//下面三行你可以插入到你的jQuery(document).ready(function()里面,html5的历史记录API
if( history && history.pushState){
//为真就执行Ajaxopt函数
Ajaxopt();
}
})
//Ajaxopt函数
function Ajaxopt(){
//所有不为新窗口打开的链接
$('a[target!=_blank]').live('click',function(event){
var link = event.currentTarget;
var url = link.href;
if ( event.which > 1 || event.metaKey || event.ctrlKey )
return
if ( location.protocol !== link.protocol || location.host !== link.host ){
return;
}
if (link.hash && link.href.replace(link.hash, '') === location.href.replace(location.hash, ''))
return
if (url.indexOf("respond")>0||url.indexOf("/wp-admin/")>0||url.indexOf("wp-login.php")>0||url.indexOf("sitemap.xml")>0)
return
//以上条件语句均为判断链接时候需要ajax加载,下面2句为执行loadDate函数进行ajax操作。
loadData(url,true);
event.preventDefault();
});
}

//loadDate函数
function loadData(url,toPush){
//进行AJAX操作
$.ajax({
url:url,
data: "soz=ajax", //这个可以参考ajax全站加载系列文章第二篇。
dataType: "html",
type: "post",
beforeSend:function(jqXHR, settings){ //加载前操作 #content的DIV变化
$('#content').fadeTo(500,0.3);
}
,
complete:function(){ //加载后操作 #content的DIV变化
$('#content').fadeTo(200,1);
}
,
success:function(message){ //加载成功的操作
var msger = message;
var titl1 = $(message).find("h1:first").text();
var titl2 = $(message).find("h2:first").text();
if (titl1 == "") {
window.document.title = titl2 + " \u2502 SOZ";
}
else {
window.document.title = titl1 + " \u2502 SOZ";
}
//以上几句为组合新页面的标题。下面一句为插入ajax回来的内容到"#content"的DIV容器内。
$("#content").html(msger);
if(toPush){//使用html5的特有API 来改变历史记录数据。
window.history.pushState(null, titl1, url);
}
if(!ajaxBinded){//ajax后重新绑定新加载页面的ajax事件。
ajaxBinded = true;
$(window).bind('popstate', function(e){
loadData(location.href,false);
return false;
});
}
}
,
error: function() {//如果加载失败 报错内容
$("#content").html("

AJAX Error...

");
},
});
}

以上为所有ajax操作的必要步骤,小白同学可以仔细研究。高手可以路过 嗯

From: http://soz.im/wordpress-is-the-stations-ajax-to-load-four-complete-code-articles.html

WordPress的全站Ajax加载(三)改变地址栏

Ajax的优点就是通过局部刷新内容 提高用户体验,但是众所周知的的,ajax后地址栏是不会跟随改变的,URL会一直显示在你第一次进入网站的地址。这样的话 如果用户想分享地址的或者想保存地址的话 就不是当前文章所在的地址。还有返回前进不能使用,这样就造成了很尴尬的局面。这篇文章将介绍2种实现方法,2种各有优缺点。Let’s go~~第一种方法是通过Jquery的一个插件jQuery Address实现的。优点就是兼容低版本的浏览器,缺点呢就是它是通过“#”锚点的方法来改变地址的,如果你直接复制AJAX后带锚点的地址打开的话,浏览器会先加载锚点之前的页面,然后才会执行你写的JS,再通过判断AJAX加载锚点的地址。当然也不能算是个很明显的缺点了。

jQuery Address只有十几K的体积,算是很比较小的插件了。(下载)在AJAX执行之前我们来使用插件做操作地址栏。代码如下

var addresschanged=false;                                                   
$('a[rel="ajax"]').live("click",function(){ 所有rel=ajax的 A链接,
var a=$(this),href=a.attr("href");
_text=a.text();
c=a.attr("title");
if(c==""||c==null)c=_text;
deeplink=href.replace("http://"+location.hostname+"/",""); 设置deeplink
if(deeplink=="")deeplink="!"; 如果deeplink为空或带!
addresschanged=true;
$.address.value(deeplink);
window.document.title=c+;
return false
});
$.address.change(function(event){ 监控地址栏变化
var value=event.value,current=$("#content"),href;
if(value.indexOf("comment")!==1){
if(value=="/"){ 通过几步判断锚点是否需要加载
href=location.href;
}
else {
if(value=="/!"){href="http://"+location.hostname+"";
addresschanged=true
}
else{
href="http://"+location.hostname+""+value+"";
addresschanged=true
}
}
if(addresschanged==true){loadpage(href)} 如果addresschanged为真 执行loadpage函数(loadpage函数就是AJAX加载代码)
}
});

是不是很方便通过锚点变化里进行ajax操作,若是首页地址则变成 http://soz.im/#/! 如果其它页面则变成http://soz.im/#/xxxx.html。想了解更多详细问题可以去 http://www.asual.com/jquery/address/了解。

如果你不想使用jquery插件,并且你只准备到支持html5的浏览器使用的话 可以使用下面的方法。HTML5中引进了2个API:history.pushState, history.replaceState。可以通过pushState和replaceState接口操作浏览器历史,并且改变当前页面的URL。pushState是将指定的URL添加到浏览器历史里,replaceState是将指定的URL替换当前的URL。

var state = {
title: title,
url: options.url,
otherkey: othervalue
};
window.history.pushState(state, document.title, url);

调用方法如上。响应浏览器操作如下

window.addEventListener('popstate', function(e){
if (history.state){
var state = e.state;
//do something(state.url, state.title);
}
}, false);

这样就可以结合ajax和pushState完美的进行无刷新浏览了。

到这里wordpress的全站AJAX加载主要问题已经结束。剩下的应该都是一些根据自己的问题来操作的一些小问题。如果你对JS比较熟悉的话 应该是很简单的问题 当然对我写的这些也会这样认为。想更好的了解这些问题 还是多研究下js和jquery 让你更得心应手。

From: http://soz.im/wordpress-full-ajax-loaded-3-change-of-address-bar.html

WordPress的全站Ajax加载(二)异步加载

上文。通过寥寥几条评论 还是能看出大家比较喜欢这种局部刷新的效果的。今天将带大家进入异步加载的核心部分。另外由于个人不是从事IT相关的工作 有时候比较忙,更新文章不是很勤快,请谅解 呵呵。我也只是上学的时候学过一点C和java后来也无疾而终,这方面的东西也只是爱好。我也只能抽空写点东西,比如上班的时候-,-就是今天。好,不啰嗦 走起。

Ajax其实比较比较泛指,最低层的应该是.ajax(); 基于这个底层方法 JQuery又有多种类型。比如 .load(); .getScprit();  .getJSON(); 等等…想了解的话 可以自己去看API文档。最近单的应该就是.load();方法了。有多简单呢?

$("#contents").load("url #contents");

完了? 对完了。这行代码的意思就是 在页面的#contents DIV内载入地址为URL的页面,并且只取#contents元素内容,其他丢弃。当然只靠这一句代码是完成不了所有动作的,那就需要你的想象力了,请看下面内容:

$('a[target!=_blank]').live('click',function(){                   //所有a链接不为新标签打开的链接 绑定click事件。
var url = $(this).attr("href"); //获取a链接的地址
var title = $(this).attr("title"); //获取新链接的title
$('#contents').fadeTo(500,0.3); //内容部分模糊
#("#contents").load("url #contents",function(){ //开始加载
$('#contents').fadeTo(200,1); //完成后 内容部分重新显示
window.document.title = title; //设置标题
});
})

好了,这样就基本完成基本功能了。以上是使用.load()方法实现的异步加载。是不是很简单,如果你想使用底层的.ajax方法 那就请继续往下看。

在之前一片文章,我们提到过 如果想让ajax彻底不加载head,sidebar,foot等部分 需要传值。当然不加载这部分优缺点都有。优点自然是减少请求数据提高访问速度。缺点就是不执行head部分,你的wordpress插件可能有的地方会失效,还有就是获取不到新页面的关键字 准确的标题等。怎么传值呢?首先你要明白,用户第一次进来的时候 是全部加在的,直到ajax执行了 才不去加载。而搜索引擎是不会去执行你的JS文件的。所以搜索引擎下 就不怕只输出部分内容 影响soe了。 在wordpress中 公用的部分 都是使用  这样来调用的。那么我们可以用下面的方法传值。

另外 get_sidebar(); 和 get_footer(); 也用同样使用上面方法传值。(去掉#号)                                         这样$soz的值就是load。 不等于后面的ajax后 就会加载。这样我们在后面的ajax中 给$soz传值为ajax后。 就不会加载这部分了。详细如下:

$('a[target!=_blank]').live('click',function(){                   //所有a链接不为新标签打开的链接 绑定click事件。
var url = $(this).attr("href"); //获取a链接的地址
var title = $(this).attr("title"); //获取新链接的title
$('#contents').fadeTo(500,0.3);
$.ajax({
url:url,
data: "soz=ajax", //传值
dataType: "html",
type: "post", //使用post方式加载
success:function(message){
var msger = $("message");
window.document.title = ttitle;
$("#content").html(msger);
$('#contents').fadeTo(200,1);
script = jQuery("#afterrun script"); //解决ajax JS运行的问题。
for (var i = 0;i < script.length;i++) eval(jQuery(script[i]).html());
}
,
error: function() {
$("#content").html("AJAX Error...");
} ,
});
})

好了上面代码就是通过底层.ajax方法实现的。和之前的.load方法 差不多。需要注意的就是 js在ajax后 执行的问题。到这里,ajax的核心代码已经完成 。其他动作那就要根据你自己来制定了。不如ajax过程中的动画,啥的小细节。我相信如果你对JQuery比较熟悉的话 应该也是很容易的一件事。

通过上面的方法,你会发现AJAX加载时没什么问题的,但是地址栏的URL是不会改变的。前进后退也不能用。那改怎么解决呢?不要着急,我会在下一篇文章中为大家介绍我使用过的2种方案,欢迎大家来围观。。。

 

From: http://soz.im/wordpress-full-ajax-load-2-asynchronous-loading.html

WordPress的全站Ajax加载(一)扯独自

大家好,经过了大约一年 我终于更新文章了-,- 。至于为什么这么久呢 在这里我也就不多了说,我在about也没也简单介绍过了。今天不是来扯独自的(雾)~。从这篇文章开始我就将分多次向大家介绍全站Ajax的实现。高手请绕行,菜鸟估计也会有点晕,我也尽量从我这个菜鸟角度出发,说的通俗易懂。说道Ajax,也许大家不是很陌生,最常见的应该 就是评论Ajax提交了。如果你还想直观点的了解,你可以点击我的站内随便的链接。(注:你的浏览器支持html5)你会发现head,sidebar,foot部分都不会刷新,只刷新了文章部分。而且地址栏也会做出相应改变,可以使用前进后退按钮。不要被备注迷惑,不是支持Html5的浏览器才能Ajax的。Ajax有什么好处么?当然就如你看到的只加载你需要的部分,提高了网页的用户体验。减少了加载数据。当然也存在缺点,不会改变URL,当然也就不能使用前进后退。对搜索引擎不友好,如果你ajax请求的页面是不存在真实地址的话,就不会被索引到。接下来我会通过其他方式了弥补缺点发扬优点..在Wordpress上合理使用Ajax。

上面说过对搜索引擎的问题,所以这里我们Ajax加载将会采用加载真实地址,不会通过后台函数输出想要的内容。这样搜索引擎会访问到真实的地址,而用户则会ajax加载需要的内容。还有个问题就是ajax真实地址后我们加载的数据跟直接访问会一样 再次加载了不需要的内容。当然我们可以从过在AJax后删除不需要的内容,这些内容也仅仅是Html代码 还不回被真正执行。当时PHP后台还是会浪费资源输出这些。要想真正放弃加载需要内容之外的东西。这里会做个判断,当用户第一次进入网页 会加载head,sidebar,foot。当点击站内链接后。会在加载之前给这几个不需要加载的部分传值。让这些内容不输出。而搜索引擎是不会执行JS代码的,会正常访问页面。

另外个问题就是Ajax后,地址栏变化的问题。我们可以通过Jquery的history插件,或者使用html5自带的API:history.pushState和history.replaceState来实现。这个会在后面为大家详细介绍。

当然AJax的关键代码页很少,内容如下:

$.ajax({
url: ajaxUrl,
type: 'get-or-post',
error: function() {
//抛出错误
},
success: function() {
//抛出完成代码
}

但是比较繁琐的问题是之后的一些问题。这篇文章只是一个预热,我会在接下来的几篇文章为大家一一详细介绍。欢迎有兴趣的朋友围观,说的不好也别拍砖=。=

From:http://soz.im/wordpress-full-ajax-loading-1-alone.html

抗战剧雷人台词:爷爷9岁被杀 抗战还最后一年

近日,有网友精选出了众多抗战剧中的雷人台词,悉数过往的徒手撕鬼子,搜集这些台词的网友们想必也是经历了一番苦痛的挣扎才硬生生将这些台词给扣下来的,看完以后小编真的一个劲儿的在质疑自己的智商,还有网友更是直言不讳道:“这都是什么鬼!编剧我要炸烂你!”

From:http://mil.firefox.news.cn/15/0327/15/8Y9QL0WGFTKDVCBP.html