我的客户有很多博客客户。这些WordPress博客中的每一个都调用一个提供产品链接的插件。组成链接的方式如下:
{网站} /可湿性粉剂内容/插件/ prodx /产品?ID = 432320
这适用于所有博客,除了两个。在这两个上,当您尝试调用URL时,您将获得404。
所以,我禁用了除prodx之外的所有插件并将主题恢复为默认值(Kubrick),认为使用add_action()API进行插件拦截时可能会执行此操作,例如拦截URL并重定向它们。但是,这没有用。
因此,我将WordPress升级到最新版本。再一次,没有解决。
所以,我检查了权限,与一个工作正常的博客进行比较。再一次,没有解决。
所以我用一个工作博客中的一个取代了.htaccess。再一次,没有解决。
所以我用一个与这个相同的工作博客替换了所有文件,然后恢复了wp-config.php文件,以便它与正确的博客数据库交谈。再一次,没有解决。
与一个完美的博客相比,我再次仔细检查了权限。再一次,没有解决。
所以,我创建了一个看起来像这样的test.php:
<?php
print_r($_GET);
echo "hello world";
然后我将它复制到另一个插件文件夹并使用我的浏览器进入它 - 再次,404。所以我将它复制到wp-content / plugins的根目录并尝试在那里调用它 - 再次,404。所以我把它复制到wp-content中 - 再次,404。最后,我把它复制到WordPress博客网站的根目录,这一次,它有效!
没有意义。
我开始认为这个客户的/etc/httpd/conf/httpd.conf可能会发生一些事情,但我在这个客户看到的唯一不同的是IP地址与客户的博客不同有效。每个客户都在我的客户建立的环境中获得自己的IP。
我的客户端系统也很困惑。
您认为怎么回事?这个客户的WP数据库有什么问题吗? httpd.conf中有什么问题吗?
答案 0 :(得分:1)
您可以使用phpmyadmin检查WP选项表中插件选项中的错误网址(并比较每个博客选项的其他方面),这些网址可能已在您的主机上提供,或者作为插件检查:WordPress › Portable phpMyAdmin « WordPress Plugins 。或者使用“清理选项”删除插件选项以完全“重置”插件(如果插件使用选项):Clean Options « WordPress Plugins
答案 1 :(得分:1)
您应该查看服务器的错误日志,应该有一个解释。如果没有,打开调试级别等。那说,插件真的不应该链接到插件目录中的文件,它应该使用wordpress重写类http://codex.wordpress.org/Function_Reference/WP_Rewrite
答案 2 :(得分:0)
我认为问题是网址太长了。这里有一些很好的信息:
http://www.boutell.com/newfaq/misc/urllength.html
由于某种原因,博客得到了404而不是413。
解决方法是我使用gzcompress来缩短我的长产品ID(这是一个隐形URL),然后是bin2hex。所以我像这样制作了网址:
从那里,我有我的插件添加一个初始化处理程序来劫持URL,检查它,并重定向。该功能如下所示:
add_action('init','hijackURL');
function hijack_URL() {
$sURL = $_SERVER['REDIRECT_URL'];
if (empty($sURL)) {
$sURL = $_SERVER['REQUEST_URI'];
}
if (strpos(' ' . $sURL, '/item/')>0) {
$sID = str_replace('/item/','',$sURL);
$sID = trim($sID);
if (empty($sID)) {
require('../../../wp-blog-header.php');
$sBlogURL = get_bloginfo('wpurl');
header('HTTP/1.1 302 Moved Temporarily');
header("Location: $sBlogURL");
exit(0);
}
$sID = pack('H*', $sID);
$sURL = gzuncompress($sID);
header('HTTP/1.1 302 Moved Temporarily');
header("Location: $sURL");
exit(0);
}
}