间歇性404和500错误,重定向永久到Wordpress网站

时间:2012-03-04 08:56:55

标签: wordpress .htaccess redirect permanent

我已经遗留了一个Wordpress网站,该网站已在我们当前主网站(标准HTML)的子目录中创建。所以我有:

http://www.company.com/作为主要网站

http://www.company.com/newsite/作为wordpress网站。

底层目录结构是:

/公司-COM /

/公司-COM / newsite /

这是(不用说)有点不方便。然而,由于各种原因改变这种结构将是一个问题,所以我想尽可能坚持下去。

我在/ company-com /目录中创建了一个.htaccess文件(例如)

重定向永久/aboutus.htm http://www.company.com/newsite/aboutus/

到目前为止,我有大约20个不同页面的重定向。

这似乎工作正常,直到我偶然发现我们遇到了500个错误。这发生是间歇性的。打电话给我们的托管服务提供商1和1,支持说这是因为我们的处理能力不足,需要升级我们的软件包(!)。以前我已经提出了一张在线机票并厌倦了等待回应。这张票回复说问题是.htaccess文件。

问题:

哪一个是正确的?从我所看到的.htaccess文件会导致永久性问题而不是间歇性问题所以我会缺乏处理能力。

此致 Steve Booth

2 个答案:

答案 0 :(得分:0)

这里有两个不同的问题。第一个是1and1托管包的约束。我假设您正在使用他们的共享主机包。这将是任何单个脚本执行使用的CPU。我的主机有一个“RLimitCPU 15”,这意味着没有脚本可以占用超过15秒的CPU。可能是您的应用程序“碰到”此限制并且超时。我在我的所有脚本周围使用标准的时序循环,我将其添加到脚本的开头:

define( 'START_TIME', microtime() );

这到每个脚本的末尾

pageTimer( "Page $pageName completed" );

其中pageTimer()是:

/**
  * Simple debug transaction timer
  * @param $eventName Timer event being displayed 
  */
function pageTimer( $eventName ) {
    static $u0, $s0;

    if( is_null( $s0 ) ) {
        list( $u0, $s0 ) = explode( " ", START_TIME );
        debugMsg( date( 'Y-m-d H:i:s', $s0 ) .  " - Transaction timer set at 0 mSec" );
    }

    list( $u1, $s1 ) = explode( " ", microtime() );
    $elapsed = ( ( (float)$s1 - (float)$s0 ) + ( (float)$u1 - (float)$u0 ) ) * 1000;
    debugMsg( sprintf( "\t%s at %u mSec", $eventName, (int) $elapsed ) );
}

其中debugMsg()只执行error_log( $msg . "\n", 3, $debugFile );,我会定期按页检查脚本运行时间。这样做可以让您知道某些事情是否花费太长时间。您要做的第二件事是将错误日志设置为目录中的私有文件并收集所有错误,然后定期检查。

第二个问题是你的重定向。这应该导致这种间歇性问题。

答案 1 :(得分:0)

我通过.htaccess RewriteRules目睹了多次与重定向相关的零星404和500错误。绝大多数都可以通过添加与重写的基本文件夹匹配的RewriteBase指令来解决,例如:

RewriteBase /

RewriteBase /newsite

事实上,许多CMS系统在预先编写的.htacces文件中已经有了这样的RewriteBase指令,该指令已被注释掉,只需要激活(例如Drupal,Joomla,TYPO3)。

虽然这在很多情况下解决了我的问题,但仍然无法解释为什么会发生间歇性重定向错误。毕竟它们应该发生或不发生,但不是随机出现。