1

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

http://www.company.com/作为主站点

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

底层目录结构是:

/company-com/

/company-com/newsite/

这(不用说)有点不方便。但是,由于各种原因,更改此结构将是一个问题,因此如果可能的话,我想坚持下去。

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

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

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

这似乎工作正常,直到我偶然注意到我们遇到了 500 个错误。这显然是断断续续的。致电我们的托管服务提供商 1and1,支持人员说这是因为我们的处理能力不足,需要升级我们的软件包(!)。以前我已经提出了在线票,并且厌倦了等待响应。此票已回复说问题出在 .htaccess 文件中。

问题:

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

问候史蒂夫布斯

4

2 回答 2

0

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

RewriteBase /

或者

RewriteBase /newsite

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

虽然这在许多情况下为我解决了这个问题,但我仍然无法理解为什么会发生这种间歇性重定向错误。毕竟它们应该发生或不发生,但不能随意来去。

于 2014-10-24T14:30:13.237 回答
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 ); ,我定期按页检查脚本运行时间。这样做可以让您知道某些事情是否花费了太长时间。您应该做的第二件事是将错误日志设置为目录中的私有文件并收集所有错误,然后定期检查。

第二个问题是您的重定向。这不应导致此间歇性问题。

于 2012-03-04T10:23:07.977 回答