早先的wordpress链接是这样的:https://blog.vrqq.org/?p=15
现在的Typecho是这样的:https://blog.vrqq.org/archives/213/
我们要配置一个跳转,兼容一下。。
配置:nginx with rewrite module
Typecho 1.2
Nginx配置
添加如下配置:
#rewrite ^/?p=([0-9]*)$ /jmp/$1 redirect; #这样是不能用的,下面说。
if ($request_uri ~* "^/\?p=([0-9]*)$" ) {
set $myarg1 $1;
rewrite .* https://blog.vrqq.org/jmp/$myarg1? redirect;
}
注释掉的代码是不能用的,nginx用rewrite的时候,正则并不能匹配?(问号),他的匹配方式是匹配问号之前的部分,然后把问号之后的部分附在新的字符串后面。。所以我们要用$request_uri把我们的匹配数字提出来!$request_uri
变量指的是完整的url,例如/q.php?w=123;$uri
就是前半部分 /q.php
正则表达式加括号,就可以用$1,$2了。。
redirect改成last可以在第一层隐式跳转,就是用户浏览器的地址条少闪一下。。
写一个Typecho的Plugin。
好了,看了好多教程没写清楚,Plugin入口的名字一定要是class xxx_Plugin
,Action入口的名字要求class xxx_Action
,并且有些函数不能乱动。。
// file: Plugin.php
/**
* @package WpJumper
* @author vrqq <vrqq3118@163.com>
* @version 0.0.1
* @link http://blog.vrqq.org
*/
class WpJumper_Plugin implements Typecho_Plugin_Interface {
public static function activate() {
Helper::addAction('wpjumper', 'WpJumper_Action');
Helper::addRoute("wordpress_jumper","/jmp/[wpid]","WpJumper_Action","wpjump");
}
public static function deactivate() {
Helper::removeRoute("wordpress_jumper");
Helper::removeAction('wpjumper');
}
public static function config(Typecho_Widget_Helper_Form $form) {}
public static function personalConfig(Typecho_Widget_Helper_Form $form) {}
}
//此处不封口
下一个是响应跳转的文件
// File: Action.php
<?php
class WpJumper_Action extends Typecho_Widget implements Widget_Interface_Do {
public function __construct($request, $response, $params = NULL)
{
parent::__construct($request, $response, $params);
}
public function wpjump() {
$wpdict = array(
"15" => '236',
"aw" => "ggg"
);
$key = $this->request->wpid;
$url = "/";
//Helper::options()->siteUrl();
if ( array_key_exists($key, $wpdict) )
$url = "/archives/" . $wpdict[$key];
$this->response->setHeader('X-Robots-Tag','noindex, nofollow');
$this->response->redirect($url);
print("GOTO: " . $url);
exit;
}
public function action(){
$this->response->goBack();
}
}
?>
放在webroot/usr/plugins/WpJumper/里面即可,然后千万不要忘记给权限,以及给seLinux权限。。
全文完,祝大家身体健康。