首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >插件如何在WordPress中劫持网址?

插件如何在WordPress中劫持网址?
EN

Stack Overflow用户
提问于 2009-12-31 16:42:31
回答 2查看 1.2K关注 0票数 1

当然,我总是可以编辑WordPress的.htaccess文件,但这会让我的可湿性粉剂插件有点不标准。相反,通过WordPress中的自定义插件劫持网址的方法是什么?

例如,假设我想要构建一个精致的产品目录,它可以作为插件安装在WordPress中。一旦激活,你就可以进入插件的管理面板,告诉它所有以"/catalog“开头的URL(或者你选择的任何东西)都会转到这个产品目录应用程序。现在应用程序将驻留在wp-content/plugins/mycatalog文件夹中。因此,/catalog/product/400将转到wp-content/plugins/mycatalog/app.php,然后它将从URL中解析出"product“和"400”。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-12-31 19:08:44

我在wp-content/plugins/hijack路径中创建了一个插件文件夹,然后将这个文件plugin.php放入其中。

代码语言:javascript
复制
<?php
/*
Plugin Name: Hijack
Plugin URI: http://example.com/contact
Description: Sample URL Hijacker Plugin
Author: John Doe
Version: 1.1
Author URI: http://example.com/contact
*/

add_filter('init','Hijack');

function Hijack() {
    $URL = get_bloginfo('wpurl');
    $PLUGIN = $_SERVER['SCRIPT_FILENAME'];
    $PLUGIN = str_replace('/index.php','',$PLUGIN);
    $PLUGIN = $PLUGIN . '/wp-content/plugins/hijack';

    $sHijack = '/catalog';

    $sURL = $_SERVER['REDIRECT_URL'];
    if (strpos(' ' . $sURL,$sHijack)>0) {
        $sYank = $URL;
        $sYank = str_replace('http://','',$sYank);
        $sYank = str_replace('https://','',$sYank);
        $sYank = str_replace($_SERVER['SERVER_NAME'] . '/','',$sYank);
        $sYank = $sYank . $sHijack;
        $sTemp = str_replace($sYank,'',$sURL);
        $sTemp = str_replace($sYank . '/','',$sTemp);
        $sTemp = str_replace('//','/',$sTemp);
        if ((substr($sTemp,-1,1) == '/') and ($sTemp != '/')) {
            $sTemp = substr($sTemp, 0, -1);
        }
        define('VARS',$sTemp);
        include($PLUGIN . '/index.php');
        exit(0);
    }
}

然后,我添加了wp-content/plugins/hijack/index.php作为测试用例,并使用了以下代码:

代码语言:javascript
复制
<?php

echo VARS;
echo "<br />\n";
print_r($_GET);

在这一点上,当插件被激活时,我可以将/catalog、/catalog/products/400等所有URL重定向到我的劫持插件文件夹中的index.php文件,然后index.php将充当加载到WordPress中的web应用程序的前端控制器。(我希望您熟悉PHP编程的MVC模型。)然后可以重写前端控制器,以根据VARS中的内容调用页面控制器。

票数 1
EN

Stack Overflow用户

发布于 2009-12-31 18:57:17

我不确定我确切地理解了您想要的是什么,但是您总是可以用$_SERVER['REQUEST_URI']检查PHP中请求的文档的URL,并使用parse_urlexplode("/", $_SERVER['REQUEST_URI'])之类的东西来分析它。

至于重定向页面,您可以使用带有HTTP重定向或元重定向的header()调用。不过,这些都不是WordPress所特有的。redirection插件可能会完成您所需的工作:

http://wordpress.org/extend/plugins/redirection/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1984555

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档