1.比较简单的域名301重定向:即将A定向到B 以下为引用的内容:
$the_host = $_SERVER['HTTP_HOST']//取得当前域名
if($the_host != 'www.bluefate.org')//判断获取的这个域名是不是你想要的(即定向后的域名)
{
header("HTTP/1.1 301 Moved Permanently")//发出301头部
header("Location:域名) //跳转到你希望的域名exit()
}
将上面的代码放入到根目录的index.php的最开始的地方就行了,实现的效果是原域名下的所有地址都将转跳到新域名的首页。
2.另一种比较麻烦一点,不过效果会好一点:
他可以将原域名下的所有链接地址定向到对应新域名的地址,即:域名变化,但是参数不变的。代码如下:
以下为引用的内容:
$the_host = $_SERVER['HTTP_HOST']//取得当前域名
if(strtolower($the_host) != 'www.bluefate.org')//把这里的域名换上你想要的
{ $URIRedirect=$_SERVER['REQUEST_URI']//获取域名后的参数
if(strtolower($URIRedirect)=="/index.php")//判断是参数为/index.php就显示为/
{
$URIRedirect="/"
}
header("HTTP/1.1 301 Moved Permanently")//发出301头部
header("Location: 你希望的地址格式")跳转到你希望的地址格式
exit()
}
以上两种方法,不仅适合wordpress的程序,一般PHP程序都可以使用的。写到这里其实我的博客的301已经做好了,我用的是第二种。下面的一种方法,有兴趣的也可以研究一下啦。
3
在linux并且支持rewrite就可以通过.htaccess来设置了,代码如下:
以下为引用的内容:
以下为引用的内容:
# BEGIN WordPress
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine on
rewritecond %{http_host} ^www.a.com[nc]
rewriterule ^(.*)$ http://www.b.com/$1 [L,R=301]
</IfModule>
# END
用的是Apache 2.2 / Linux Mint13 / wordpress 3.4.1.网上的解决办法都说只要在文件/etc/apache2/ports.conf中添加如下行:
NameVirtualHost *:1234
Listen 1234
然后在目录/etc/apache2/sites-available为wordpress站点新建一个virtual host:
<VirtualHost *:1234>
ServerName wordpress.com
ServerAdmin webmaster@wordpress.com
DocumentRoot /home/tristan/workspace/wordpress
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /home/tristan/workspace/wordpress/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
然后把wordpress.com名称解析添加到/etc/hosts文件中,
127.0.0.1 wordpress.com
这样当域名解析时会直接把wordpress.com解析为127.0.0.1,而不是公网上的那个真正的wordpress官网的IP地址。
我试了以后在浏览器中输入http://wordpress.com:1234,仍然收到301 (permanent removed)错误代码,然后直接跳转到apache服务器的默认index页面。
这个需要打开浏览器的脚本debugger,然后检测请求发送与响应。
然后,我用netstat检测端口有没有打开,发现端口已经打开了。
然后我又用telnet尝试连接http://wordpress.com:1234,
telnet http://wordpress.com 1234
GET / HTTP/1.0
(注意,输完后要按两次回车)
可以得到响应。
开始一直以为apache2没配对,看了那个官方文档,英文的,中文的都看了,没发现有啥不对劲。后来又怀疑端口是不是有问题,换了其他端口,也没发现问题。
在网上找了半天,终于发现是wordpress的配置8对。天杀的,网上的那些答案太抽象了。
原来要再wp-config.php文件中修改两个变量的值:
define('WP_SITEURL', 'http://wordpress.com:1234')
define('WP_HOME', 'http://wordpress.com:1234')
这两个全局变量需要比较新的wordpress,应该版本大于2.2哈。如果不是的话,那就直接修改数据库中表wp_options。
update wp_options set option_value=N'http://wordpress.com:1234' where option_name='siteurl'
update wp_options set option_value=N'http://wordpress.com:1234' where option_name='home'
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)