单个WordPress多域名绑定

有时候需要为 WordPress 绑定多个域名,并且不是跳转方式,一招,轻松解决 WordPress 的多域名绑定问题。

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

$home = ‘http://’.$_SERVER[‘HTTP_HOST’];
$siteurl = ‘http://’.$_SERVER[‘HTTP_HOST’];
define(‘WP_HOME’, $home);
define(‘WP_SITEURL’, $siteurl);

我们知道,PHP 中的 $_SERVER[‘HTTP_HOST’] 用于获得来路域名。这样,就能根据来路为 WP_HOME 和 WP_SITEURL 变量赋值,实现 WordPress 多域名绑定。

为防止域名改变而造成图片不可用,必须在控制面板的“设置 (Options) – 杂项 (Misc)”里将“文件的完整 URL 地址”设为 “wp-content/uploads”(与“默认上传路径”参数相同)。

WordPress 更换域名使用到的SQL语句及实现301跳转

如果你的博客需要更换域名或地址,备份好你的数据库后,在cpanel进入phpmyadmin,然后在你的博客所在的那个数据库的右边“SQL”那里运行下面SQL语句。
原来的博客地址http://xiaokyun.com,然后现在http://www.xiaokyun.com:

UPDATE wp_options SET option_value = replace( option_value, ‘http://xiaokyun.com’, ‘http://www.xiaokyun.com’ ) WHERE option_name = ‘home’ OR option_name = ‘siteurl’;
UPDATE wp_posts SET post_content = replace( post_content, ‘http://xiaokyun.com’, ‘http://www.xiaokyun.com’ ) ;
UPDATE wp_posts SET guid = replace( guid, ‘http://xiaokyun.com’, ‘http://www.xiaokyun.com’ ) ;

为了不损失流量跟在搜索引擎中的收录,需要对原来的域名所在的主机进行301跳转。于是在老时http://xiaokyun.com域名的安装wp的根目录对.htaccess进行修改。

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

这样子以后访问原来的域名的所有地址都能够很好地跳转到新址,而且对于流量来说几乎是不会有所损失。

IIS下wordpress永久链接(PermaLink)不用rewrite使用404页面实现

如果是在Linux主机下,主机支持mod_rewrite的话,那就不需要费那么大的劲,但是一部分WordPress是安装在Windows主机上的,要想使伪静态就有点麻烦。我在网上找了很多wordpress的rewrite规则,但是都不敢用。wordpress又不提供标准rewrite规则,真是麻烦。

在网上找wordpress的404页面使用的时候居然找到一个教程,原理是利用404错误页面重写URL,达到wordpress的伪静态。这样就可以在IIS下实现漂亮的URL。

第一,建一个404.php文件在你的WordPress根目录中,文件内容如下:
<?php
$qs = $_SERVER[‘QUERY_STRING’];
$_SERVER[‘REQUEST_URI’] = substr($qs, strpos($qs, ‘:80′)+3);
$_SERVER[‘PATH_INFO’] = $_SERVER[‘REQUEST_URI’];
include(’index.php’);
?>

第二,设置站点404错误页面,独立服务器的可以直接操作IIS,如果是虚拟主机的,现在大部分虚拟主机控制面板都支持设置404错误页面,你把地址设置为”/404.php”。
自己管理iis的,可以通过网站属性-自定义错误来设置404错误页面,不过也要用绝对地址”/404.php”。
第三,登陆你的wordpress后台,设置->永久链接,结构可以任意设置,如:
/%year%/%monthnum%/%postname%/

问题:
不支持中文,postname和tag最好是英文的,中文的还是无法访问。中文的tag可以去设置一下tag slug

在网上查一些资料,才明白原因。原来带有中文的postname和tag的url其实是属于gbk编码,但是wordpress是utf-8编码。所以在404页面中要把网址转码称utf-8,这样就能完美解决404页面实现rewrite的不支持中文问题。

渴慕晨光使用的404页面是:404错误页面

wordpress模板和调用函数

WordPress基本模板文件

一套完整的WordPress模板应至少具有如下文件:

style.css : CSS(样式表)文件
index.php : 主页模板
archive.php : Archive/Category模板
404.php : Not Found 错误页模板
comments.php : 留言/回复模板
footer.php : Footer模板
header.php : Header模板
sidebar.php : 侧栏模板
page.php : 内容页(Page)模板
single.php : 内容页(Post)模板
searchform.php : 搜索表单模板
search.php : 搜索结果模板

当然,具体到特定的某款模板,可能不止这些文件,但一般而言,这些文件是每套模板所必备的。

基本条件判断Tag

is_home() : 是否为主页
is_single() : 是否为内容页(Post)
is_page() : 是否为内容页(Page)
is_category() : 是否为Category/Archive页
is_tag() : 是否为Tag存档页
is_date() : 是否为指定日期存档页
is_year() : 是否为指定年份存档页
is_month() : 是否为指定月份存档页
is_day() : 是否为指定日存档页
is_time() : 是否为指定时间存档页
is_archive() : 是否为存档页
is_search() : 是否为搜索结果页
is_404() : 是否为 “HTTP 404: Not Found” 错误页
is_paged() : 主页/Category/Archive页是否以多页显示

Header部分常用到的PHP函数

<?php bloginfo(’name’); ?> : 博客名称(Title)
<?php bloginfo(’stylesheet_url’); ?> : CSS文件路径
<?php bloginfo(’pingback_url’); ?> : PingBack Url
<?php bloginfo(’template_url’); ?> : 模板文件路径
<?php bloginfo(’version’); ?> : WordPress版本
<?php bloginfo(’atom_url’); ?> : Atom Url
<?php bloginfo(’rss2_url’); ?> : RSS 2.o Url
<?php bloginfo(’url’); ?> : 博客 Url
<?php bloginfo(’html_type’); ?> : 博客网页Html类型
<?php bloginfo(’charset’); ?> : 博客网页编码
<?php bloginfo(’description’); ?> : 博客描述
<?php wp_title(); ?> : 特定内容页(Post/Page)的标题

模板常用的PHP函数及命令

<?php get_header(); ?> : 调用Header模板
<?php get_sidebar(); ?> : 调用Sidebar模板
<?php get_footer(); ?> : 调用Footer模板
<?php the_content(); ?> : 显示内容(Post/Page)
<?php if(have_posts()) : ?> : 检查是否存在Post/Page
<?php while(have_posts()) : the_post(); ?> : 如果存在Post/Page则予以显示
<?php endwhile; ?> : While 结束
<?php endif; ?> : If 结束
<?php the_time(’字符串’) ?> : 显示时间,时间格式由“字符串”参数决定,具体参考PHP手册
<?php comments_popup_link(); ?> : 正文中的留言链接。如果使用 comments_popup_script() ,则留言会在新窗口中打开,反之,则在当前窗口打开
<?php the_title(); ?> : 内容页(Post/Page)标题
<?php the_permalink() ?> : 内容页(Post/Page) Url
<?php the_category(’, ‘) ?> : 特定内容页(Post/Page)所属Category
<?php the_author(); ?> : 作者
<?php the_ID(); ?> : 特定内容页(Post/Page) ID
<?php edit_post_link(); ?> : 如果用户已登录并具有权限,显示编辑链接
<?php get_links_list(); ?> : 显示Blogroll中的链接
<?php comments_template(); ?> : 调用留言/回复模板
<?php wp_list_pages(); ?> : 显示Page列表
<?php wp_list_categories(); ?> : 显示Categories列表
<?php next_post_link(’ %link ‘); ?> : 下一篇文章链接
<?php previous_post_link(’%link’); ?> : 上一篇文章链接
<?php get_calendar(); ?> : 日历
<?php wp_get_archives() ?> : 显示内容存档
<?php posts_nav_link(); ?> : 导航,显示上一篇/下一篇文章链接
<?php include(TEMPLATEPATH . ‘/文件名’); ?> : 嵌入其他文件,可为定制的模板或其他类型文件

与模板相关的其他函数

<?php _e(’Message’); ?> : 输出相应信息
<?php wp_register(); ?> : 显示注册链接
<?php wp_loginout(); ?> : 显示登录/注销链接
<!–next page–> : 将当前内容分页
<!–more–> : 将当前内容截断,以不在主页/目录页显示全部内容
<?php timer_stop(1); ?> : 网页加载时间(秒)
<?php echo get_num_queries(); ?> : 网页加载查询量

WordPress错误:Cannot modify header information

Warning: Cannot modify header information – headers already sent by (output started at /www/htdocs/xiaokyun/wp-config.php:1) in /www/htdocs/xiaokyun/wp-login.php on line 255

Warning: Cannot modify header information – headers already sent by (output started at /www/htdocs/xiaokyun/wp-config.php:1) in /www/htdocs/xiaokyun/wp-login.php on line 267
Warning: Cannot modify header information – headers already sent by (output started at /www/htdocs/xiaokyun/wp-config.php:1) in /www/htdocs/xiaokyun/wp-includes/pluggable.php on line 649
Warning: Cannot modify header information – headers already sent by (output started at /www/htdocs/xiaokyun/wp-config.php:1) in /www/htdocs/xiaokyun/wp-includes/pluggable.php on line 650
Warning: Cannot modify header information – headers already sent by (output started at /www/htdocs/xiaokyun/wp-config.php:1) in /www/htdocs/xiaokyun/wp-includes/pluggable.php on line 651
Warning: Cannot modify header information – headers already sent by (output started at /www/htdocs/xiaokyun/wp-config.php:1) in /www/htdocs/xiaokyun/wp-includes/pluggable.php on line 850
上网搜索了一下,大致有两种解决方案,整理了一下,主要的造成的原因和解决办法如下:
1.php.ini配置问题,解决办法:打开 php.ini 然后把 output_buffering 设为 on ,重启appache即可。
2.使用windows记事本编辑的wp-config文件造成(UTF8编码和BOM冲突),解决办法:使用Notepad++、UltraEdit、EditPlus等编辑器编辑文件,一般的主机管理系统自带的编辑功能也不错。
或者,将wp-config.php另存为ANSI编码。
如果是安装PHP其他程序或者自己写的程序出现以上问题,除了以上两种可能,还有可能是setcookie的问题,解决办法是在输出内容之前,产生cookie,可以在程序的最上方加入函数 ob_start(); 格式如下:
ob_start :打开输出缓冲区
函数格式:void ob_start(void)