如何修改.htaccess实现WordPress 301重定向

出于 SEO、PR 值传递、网址转换的目的,我们经常需要使用 301 重定向,通常包括域名对域名,目录对目录和一个独立网址对另一个独立网址的重定向。最常用的方法有2种:

1.直接编辑 .htaccess。

2.用 cPanel 设定。

实质二者都是修改文件 .htaccess,只是前者手工编辑,后者是由 cPanel 完成。用 cPanel 操作相当简单,登陆你的 cPanel–>Domain–>Redirects,选择相应的选项即可完成设置。下面讲一下直接编辑 .htaccess 的方法。

注意:在设置 301 重定向之前务必备份相应目录下的.htaccess文件。

1.重定向domain.com到www.domain.com
这种重定向旨在使域名唯一,是网站SEO必须要做的,后面重定向www.domain.com到domain.com也是出于同样的原因,只是形式不同。打开.htaccess文件,加入以下规则。(下面的规则是针对主域名的,子域名要修改)

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www.domain.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]

2.重定向www.domain.com到domain.com

RewriteEngine On
RewriteCond %{HTTP_HOST} !^domain.com$ [NC]
RewriteRule ^(.*)$ http://domain.com/$1 [L,R=301]

3.重定向olddomain.com到www.newdomain.com

RewriteEngine On
RewriteCond %{HTTP_HOST} !olddomain.com$ [NC]
RewriteRule ^(.*)$ http://www.newdomain.com/$1 [L,R=301]

4.重定向olddomain.com to newdomain.com

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !olddomain.com$ [NC]
RewriteRule ^(.*)$ http://newdomain.com/$1 [L,R=301]

5.重定向domain.com/file/file.php 到 otherdomain.com/otherfile/other.php

RewriteCond %{HTTP_HOST} ^www.domain.com$
RewriteRule ^file/file.php$ http://www.otherdomain.com/otherfile/other.php [R=301,L]

WordPress 多域名绑定方法

刚看的一篇关于 WordPress 同时绑定多个域名方法,转载备份一下,说不定以后会用到。如果只是 WordPress 更换域名的话,这个应该很简单,做个301重定向,然后备份导入站点数据,再修改下wp-config.php和wp-options、wp_posts数据表即可,这个我以前也设置过。当然,下面这篇文章不是介绍这个,说的是 WordPress 多域名绑定。

下面方法适用于想在同一空间和 WordPress 统上绑定多个域名使用,这里没有用到跳转。

WordPress 多域名绑定方法:

打开编辑 WordPress 根目录下的 wp-config.php 文件,添加下面代码:

$_asdfasdf_myurl = ‘http://’.$_SERVER['HTTP_HOST'];
define(‘WP_HOME’, $_asdfasdf_myurl);
define(‘WP_SITEURL’, $_asdfasdf_myurl);
unset($_asdfasdf_myurl);

在上面代码语句中,$_SERVER[‘HTTP_HOST’] 是用来检测获取来路域名,后面根据来路为 WP_HOME 和 WP_SITEURL 变量赋值,这样就可以实现 WordPress 多域名绑定了。为了防止域名改变而造成图片不可用,需要到 WordPress 设置——媒体里,将图片上传目录设置为wp-content/uploads。最后,将你想要绑定的域名指向到该系统即可。

WordPress缩略图支持URL外链

wordpress-category.png
最近在帮朋友AJ桑_憨土豆定制的WordPress主题,想让缩略图支持URL外链引用图片(又拍图片管家不提供又拍云那样的API服务,得手动添加,需要这个功能),简单的记录在这里:

支持手动上传缩略图
支持缩略图外链引用
如果文章内包含有图片,就用第一张图片做为缩略图
如果文章内没有图片,则用默认的图片
其实就是用WP提供的自定义栏目功能来解决,

  1. $postImageUrl = get_post_meta($post->ID, ‘thumbnail’, true); //设置自定义栏目名为“thumbnail”

1.在functions.php文件中添加

  1. //缩略图获取
  2. add_theme_support( ‘post-thumbnails’ );
  3. set_post_thumbnail_size( 262114 ,true );//设置缩略图的尺寸
  4. function dm_the_thumbnail() {
  5. global $post;
  6. $postImageUrl = get_post_meta($post->ID, ‘thumbnail’, true); //设置自定义栏目名为“thumbnail”
  7. // 判断该文章是否设置有缩略图,如果有则直接显示
  8. if ( has_post_thumbnail() ) {
  9. echo ‘<span class=“work-thumbnail”>’;
  10. the_post_thumbnail();
  11. echo ‘</span>’;
  12. } elseif ($postImageUrl) {
  13. echo ‘<span class=“work-thumbnail”><img alt=“” src=“‘.$postImageUrl.'” /></span>’;
  14. else { //如果文章没有设置缩略图,则查找文章内是否包含图片
  15. $content = $post-&gt;post_content;
  16. preg_match_all(‘/&lt;img.*?(?: |\\t|\\r|\\n)?src=[\’“]?(.+?)[\'”]?(?:(?: |\\t|\\r|\\n)+.*?)?&gt;/sim’, $content, $strResult, PREG_PATTERN_ORDER);
  17. $n = count($strResult[1]);
  18. if($n &gt; 0){ // 如果文章内包含有图片,就用第一张图片做为缩略图
  19. echo ‘<span class=“work-thumbnail”><img alt=“” src=“‘.$strResult[1][0].'” /></span>’;
  20. }else { // 如果文章内没有图片,则用默认的图片
  21. echo ‘<span class=“work-thumbnail”><img alt=“” src=“‘.get_bloginfo(‘template_url’).’/images/thumbnail.jpg” /></span>’;
  22. }
  23. }
  24. }

2.在后台界面右上角点击显示选项,勾选自定义栏目

3.获取timthumb.php文件,放在主题根目录下

然后调整样式就好了,关于结构和类名可以修改为适合自身主题的就好。

WordPress无插件纯代码不修改文件实现音乐播放器功能

这一次真真正正的实现了wordpress无插件纯代码的网页播放器,甚至连后台的functions.php都不用修改,也不用上传自己下载的播放器,直接在编辑文本的时候,切换到html状态,输入代码即可。这里将代码分享如下:

  1. <audio width=“300” height=“32” style=“‘margin:auto;” controls=“controls” autoplay=“autoplay” top:0=“” right:0=“” bottom:0=“” left:0=“” name=“media” src=“http://www.weilifei.cn/***.mp3”></audio>

bofangqi.jpg

上面写的是autoplay为自动播放,不需要的话,直接删除 autoplay=”autoplay” 即可。
只需要把播放地址换成自己的音乐地址即可。具体操作如附图。样式虽然简单,但是却真正的是没有任何插件,不需要对文件做任何修改就实现在wordpress文章中插入音乐播放器的功能。
代码支持中文MP3文件名!
来个演示:

解决WordPress Memory Limit(内存限制过小)

Memory Limit是php主机对内存的限制,主机的运行速度如何直接影响你网站的访问速度,因此,在购买主机的时候,内存限制也是一项很重要的指标。最近在测试一款免费空间时,就出现了“当前内存不足以运行当前脚本”的提示。google了一下,发现这种情况也颇为多见,在此分享解决方法。

操作请注意:

1.一定不要使用记事本编辑php文件,否则很可能出现意想不到的错误,推荐使用UltraEdit,Dreamweaver等。
2.如果对于修改代码不是很有把握,请预先备份好原来的文件。
3.复制本文的代码,如果是全角符号,请自行改为半角符号,切记。

Memory Limit限制过小常见的提示语:

“Fatal error: Allowed memory size of xxx bytes exhausted.(tried to allocate xxx bytes)”

Memory Limit限制过小的解决方法:

一、如果你的空间支持.ini,可以通过修改php.ini实现,以下两种方法任选其一

1、首先在public_html 目录创建文件 php.ini,添加以下代码:
memory_limit = 64M
然后在根目录下修改.htaccess文件,添加下面代码:
suPHP_ConfigPath /home/username/public_html/

2、同样是修改php.ini
先在网站根目录下,建立一个php.ini文件,写入下面这句:
memory_limit = 64M
接着再到网站根目录下修改.htaccess这个文件,写入下面这句:
SetEnv PHPRC /home/host1/public_html/usr1/
(unix path to the directory where php.ini is)
(keep the slashes)
注:以上代码中的”64M”可根据需要适当调整。

二、通过修改WordPress自身文件修改放宽内存限制(一般由于使用过多插件造成该问题的,请用这个方法)

1、修改WP配置文件
编辑wp-config.php这个文件,在加上一句:
define(‘WP_MEMORY_LIMIT’,’64M’);
上面64M这个数字可根据情况修改为更大数值,比如168M。

2、打开wp-settings.php在第十三行找到如下语句:
define(‘WP_MEMORY_LIMIT’,’32M’)
将其中32修改为更大数值即可。

补充:如何查看WordPress内存使用情况?

推荐使用插件 wp-memory-usage 或 tpc-memory-usage 即可

wordpress英文变中文

安装是很简单的,一键安装,但是装好之后默认是英语版本,想修改成中文,在网上看到的办法是:
1、根目录找到wp-config.php 中文意思是wp的配置文件。
2、打开
define (‘WPLANG’, ‘ ‘); 这个意思是wp的语言,英文是language,简写为了lang,在第二个上引号中输入zh_CN,变成define(‘WPLANG’, ‘zh_CN’);。这个一定要正确,我修改这个的时候就是搞错了符号,把中间的这个_搞成了-,所以一直变不了中文,从前台源代码看到后面,后来仔细看才看到。
3、在后台点击默认页面,回到控制面板首页,就会出现要你更新为中文,点击自动更新就行了。

wordpress301转向最好的方式

今天把原来做为顶米的论坛取消了,坛子人气一直上不去,再加上这两天经常搬家,DZ的云平台又麻烦。

所以以后这个顶米就直接用在这个博客上了。欢迎以后用这个米登陆啊!

既然换了域名,那原来的老链接丢失怎么办,所以就网上找了些关于301跳转的帖子,发现有不少都很麻烦,要么就是告诉你去空间控制面板去做跳转,要么就是去修改代码,到底有木有那么麻烦啊。这里我把最容易的办法告诉你,一步步来:

1、先跑去把老域名,如:blog.mf158.com解析到新的空间来(就是和新域名一个空间),我是新建了个子域名绑上!

2、进到老域名空间的根目录里添加一个.htaccess,代码为:
RewriteEngine on
RewriteRule ^(.*)$ https://freekk.cn/$1 [R=301,L]

上传!

3、把新域名和站点建好,导进数据库,修改数据库几个表就完事了,不懂这步的看这里:

wordpress换域名后修改数据库的方法

完了以后,打开老的链接,如原来我的:http://blog.mf158.com/3505.html 现在打开就已经自动跳转到新的了!

完全无缝,不用怕丢失搜索引擎的来源了!估计过个把月,就可以把301转向取消了。

修改.htaccess文件提升网站访问速度方法

简单点说:就是缓存一下不常修改的文件,提升访问速度。再简单点说:就是在.htaccess文件中写入以下内容。
有时候遇到一个比较复杂的问题,我会选择暂时放一放。
YSlow的检测结果,当时优化掉几个问题后,就暂时放手了。
最近在网站优化上有了新的认识,应用一下:
Add an Expires or a Cache-Control Header
简单点说:就是缓存一下不常修改的文件,提升访问速度。
再简单点说:就是在.htaccess文件中写入以下内容:


ExpiresActive On
ExpiresDefault A600
ExpiresByType image/x-icon A2592000
ExpiresByType application/x-javascript A2592000
ExpiresByType text/css A604800
ExpiresByType image/gif A2592000
ExpiresByType image/png A2592000
ExpiresByType image/jpeg A2592000
ExpiresByType text/plain A86400
ExpiresByType application/x-shockwave-flash A2592000
ExpiresByType video/x-flv A2592000
ExpiresByType application/pdf A2592000
ExpiresByType text/html A600

text/css之类代表文件类型,A2592000表示在浏览器中的缓存时间,2592000秒=30天。
Gzip components
Gzip压缩是减少文件体积增加用户体验的简单方法,
同样,添加以下代码到.htaccess文件即可。

AddOutputFilter DEFLATE html xml php js css

配置ETag
这段话我没看明白,总之结论是:如果你没有使用ETag提供的灵活的验证模式,那么干脆把所有的ETag都去掉会更好。
我的网站只放在一台服务器上,我写.htaccess关了它:
FileETag none

为你的 WordPress 站点添加 robots.txt

稍微接触过SEO的站长朋友都应该知道 robots协议(也称为爬虫协议、爬虫规则、机器人协议等),也就是通常添加到网站根目录的robots.txt 文件,它的作用在于告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取,从而优化网站的收录结果和权重。

 

如果你的网站根目录还没有 robots.txt,你可以创建一个,具体的写法请参考 百度百科。下面是一个基本的 WordPress robots协议:
User-agent: *
Disallow: /feed/
Disallow: /trackback/
Disallow: /wp-admin/
Disallow: /wp-content/
Disallow: /wp-includes/
Disallow: /xmlrpc.php
Disallow: /wp-
Allow: /wp-content/uploads/
Sitemap: http://example.com/sitemap.xml

下面主要介绍一下 WordPress 自动创建虚拟 robots.txt 功能。如果你的网站根目录不存在真实的 robots.txt,那么可以让 WordPress 自动创建一个虚拟的 robots.txt (该文件不会真实存在,但是访问 http://yoursite.com/robots.txt 时可以正常显示)

将下面的代码添加到主题的 functions.php 即可:/**
* 为你的 WordPress 站点添加 robots.txt
* http://www.wpdaxue.com/add-robots-txt.html
*/
add_filter( 'robots_txt', 'robots_mod', 10, 2 );
function robots_mod( $output, $public ) {
$output .= "Disallow: /user/"; // 禁止收录链接中包含 /user/ 的页面
return $output;
}

注:如果你想添加更多的规则,请复制上面代码的第 7 行,然后修改一下即可。

访问 http://yoursite.com/robots.txt 我们可以看到如下内容:
User-agent: *
Disallow: /wp-admin/
Disallow: /wp-includes/
Disallow: /user/

也就是说,WordPress 默认已经添加了前 3 行规则了。

robots.txt 涉及到网站的收录,所以请确保你明白它的书写方法,保证每条规则都是正确无误的!

用外链图片怎么做特色图片?

yuncunchu
最近遇到很多朋友在说,把图片存到云端,从而提升博客的速度,但是很多人不知道特色图片怎么外链,其实wordpress的特色图片是不能使用外链地址的。
所以我们就只能使用今天说到的这个方法,调用文章的第一张图片作为特色图片,这样咱们就可以把图片存到云端了。
那我们怎么才可以获得文章中的第一张图片,并把它显示在网页中呢?
首先,打开你主题的Function.php文件,在其中加入以下代码:

  1. function catch_that_image() {  
  2.   global $post, $posts;  
  3.   $first_img = ;  
  4.   ob_start();  
  5.   ob_end_clean();  
  6.   $output = preg_match_all(‘/<img.+src=[\’“]([^\'”]+)[\’“].*>/i’, $post->post_content, $matches); 
  7.   $first_img = $matches [1] [0]; 
  8.   
  9.   if(empty($first_img)){ //Defines a default image 
  10.     $first_img = “/images/default.jpg”;  
  11.   }  
  12.   return $first_img;  
  13. }  

第二步,在你的模板的主循环中加入以下代码:

  1. <?php echo catch_that_image() ?>  

这样就可以把文章中的第一张图片显示在页面上了…

又出一个,wordpress换域名后无需修改数据库的方法

有些童鞋更换了网站的域名,就会引起文章的链接地址不正常,甚至连网站后台都无法进入,懂数据库的童鞋当然会觉得很简单,改一下数据库里面的域名就好了,但是不懂数据库的童鞋就杯具了,面对数据库那密密麻麻的英文字符,根本无从下手,那我们怎么才能把原来域名更新到现在的新域名呢?
第一种、修改wp-config.php
1、在wp-config.php中,添加以下两行内容:
define(‘WP_HOME’,'新地址’);
define(‘WP_SITEURL’,'新地址’);

2、登录后台,在 “常规 -> 设置”重新配置新博客地址(HOME)和安装地址(SITEURL),成功后一定记得删除上面添加的内容。
第二种、修改functions.php
1、在functions.php中,添加以下两行内容:
update_option(‘新地址’,”);
update_option(‘home’,'新地址’);

2、登录后台,在 “常规 -> 设置”重新配置新博客地址(HOME)和安装地址(SITEURL),成功后一定记得删除上面添加的内容。
第三种、修改wp-config.php(自动更新地址)
1、在wp-config.php中,添加下面一行内容:
define(‘RELOCATE’,true);
2、登录后台地址,WP将自动更新安装地址(SITEURL),手动修改博客地址(HOME)地址即可,成功后一定记得删除上面添加的内容。

wordpress换域名后修改数据库的方法

近来老是给几个WordPress站点换域名,其实是有几个站要做空间备份,我经常会把1个站弄成几个站,分别放在不同的空间中,那么,经常会把站的域名更换为比较好记的。

不管怎么样,数据库的修改是免不了的,网上查看过不少修改数据库的方法,但那些都是老贴了,数据库名都不一样了。

总结了一下,只有三句,大家拿去用用,打开数据库,进到表库,点SQL,输入下面语句,点确定,一次性完全OK:

修改option_value里的站点url和主页地址:
UPDATE wp_options SET option_value = replace(option_value, 'http://www.old-domain.com', 'http://www.new-domain.com') WHERE option_name = 'home' OR option_name = 'siteurl';
修改文章内部链接及附件的地址:
UPDATE wp_posts SET post_content = replace(post_content, 'http://www.old-domain.com', 'http://www.new-domain.com');
修改Wordpress文章默认的永久链接:
UPDATE wp_posts SET guid = replace(guid, 'http://www.old-domain.com', 'http://www.new-domain.com');

jQuery实现侧边栏随窗口滚动

近日帮人作主题要求弄个侧边栏某个模块随窗口一起滚动,可能其他童鞋也想给主题加上这个小功能,贴出来,供大家参考。

方法一:

很简单,前提是你的主题必须已加载了jQuery。

把下面代码加到主题头部header.php模版中即可:

  1. <script type=“text/javascript”>     
  2. $(function() {  
  3.     var $sidebar   = $(“#sidebar”),     
  4.         $window    = $(window),     
  5.         offset     = $sidebar.offset(),     
  6.         topPadding = 15;     
  7.     
  8.     $window.scroll(function() {     
  9.         if ($window.scrollTop() > offset.top) {     
  10.             $sidebar.stop().animate({     
  11.                 marginTop: $window.scrollTop() – offset.top + topPadding     
  12.             });     
  13.         } else {     
  14.             $sidebar.stop().animate({     
  15.                 marginTop: 0     
  16.             });     
  17.         }     
  18.     });     
  19.     
  20. });     
  21. </script>    

可根据不同的主题模版,自行修改一下其中的DIV标签#sidebar名称。此方法兼容所有浏览器。

演示效果

HotNews主题也可使用该功能,默认是整个侧边栏随窗口滚动,受主题布局功能限制,单独滚动某个模块效果不是很理想。

参考自:http://css-tricks.com/scrollfollow-sidebar/

方法二:

本人未试过,可以自行参阅:js页面滚动时层智能浮动定位实现

  1. $.fn.smartFloat = function() {    
  2.     var position = function(element) {    
  3.         var top = element.position().top, pos = element.css(“position”);    
  4.         $(window).scroll(function() {    
  5.             var scrolls = $(this).scrollTop();    
  6.             if (scrolls > top) {    
  7.                 if (window.XMLHttpRequest) {    
  8.                     element.css({    
  9.                         position: “fixed”,    
  10.                         top: 0    
  11.                     });        
  12.                 } else {    
  13.                     element.css({    
  14.                         top: scrolls    
  15.                     });        
  16.                 }    
  17.             }else {    
  18.                 element.css({    
  19.                     position: “absolute”,    
  20.                     top: top    
  21.                 });        
  22.             }    
  23.         });    
  24.     };    
  25.     return $(this).each(function() {    
  26.         position($(this));                             
  27.     });    
  28. };    
  29. $(“#float”).smartFloat();    

把WordPress放在子目录而地址显示根目录的方法

以WordPress放在在子目录博客显示在根目录开题。要实现如下所示的效果,空间需支持rewrite–这是前提。如果不支持的话神都救不了你,哈哈。如果我们要在根目录安装WordPress,根目录就会被WordPress的文件弄得很乱,如果再添加了自己的一些目 录就更加难以维护了。不过还好,WordPress允许将Blog主页不同于 WordPress 的安装目录的Web地址,这样我们就可以把WordPress放在子目录中,只需要简单的设置便可以让链接形式仍以根目录显示。这篇文章翻译自 WordPress官方文档,水平有限,见谅!下面是译文:

把WordPress放在在单独目录中而让你的博客显示在根目录

很多人想让WordPress来驱动他们站点的根目录(例如:http://example.com),但是他们不想让所有的的 WordPress文件把他们的根目录弄乱。WordPress允许你把WordPress文件放在一个子目录,同时让你的博客显示在站点的根目录中。

把WordPress放到单独它单独目录下的程序如下:

1、新建一个用来存放WordPress核心文件的新文件夹(本例以/wordpress示范)。

2、进入选项(options)面板。

3、找到WordPress address (URL)(中文用户请查找”WordPress 地址(URL)“)这个选项:把后面的地址改成你存放WordPress文件的文件夹地址。比如:http://example.com/wordpress

4、找到Blog address (URL)(中文用户请查找”Blog 地址(URL)“)这个选项:把此地址改为你网站的根目录的URL。例如:http://example.com

5、点击Update Options(中文用户为”更新设置“)。

6、把WordPress的核心文件转移到你新建的文件夹中,也就是WordPress address (URL)这个目录。还不明白?在明确一点:/wordpress目录。

7、把index.php和.htaccess文件从WordPress目录转移到根目录(即Blog address)中。

8、用文本编辑器打开并编辑根目录下”index.php”这个文件。

9、找到如下代码,修改并保存:找到:

  1. require(‘./wp-blog-header.php’);    

把地址改为你WordPress目录下的文件:

  1. require(‘./wordpress/wp-blog-header.php’);   

10、登陆控制面板,新的控制面板地址为http://example.com/wordpress/wp-admin/

11、如果你设置了结构化链接地址(Permalinks),打开永久链接选 项面板更新Permalinks结构。如果.htaccess有正确的权限设置的话WordPress会自动更新你的.htaccess文件。如果 WordPress不能写入你的.htaccess文件,就会显示新的rewrite规则,因此你就需要手动把rewrite规则复制到. htaccess文件中(和index.php同目录)。

原文地址:http://codex.wordpress.org/Giving_WordPress_Its_Own_Directory

译文也同时发布于WordPress中文文档中。

这些步骤貌似很麻烦但实际操作起来很简单,老外写的过于详细了,相信稍有经验的人都应该可以看懂。以前我的WordPress也安装在根目录,但今天按照操作改到了子目录中,根目录就变得清爽多了。注意操作步骤要严格按照这上面的来,每布的顺序不要弄错,否则你可能就进不了后台,或者页面无法打开。而一旦出现那些问题就只能手动修改数据库了。