1

私は、現在のメイン Web サイト (標準 HTML) のサブディレクトリに作成された Wordpress サイトを遺贈されました。ので、私は持っています:

http://www.company.com/をメインサイトとして

http://www.company.com/newsite/をワードプレス サイトとして使用します。

基礎となるディレクトリ構造は次のとおりです。

/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

ここには 2 つの別個の問題があります。1 つ目は、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()aerror_log( $msg . "\n", 3, $debugFile ); を実行するだけで、ページごとにスクリプトの実行時間を定期的にチェックします。これを行うと、何かに時間がかかりすぎているかどうかがわかります。2 番目にすべきことは、エラー ログをディレクトリ内のプライベート ファイルに設定し、すべてのエラーを収集してから、これを定期的に確認することです。

2 番目の問題は、リダイレクトです。これにより、この断続的な問題が発生することはありません。

于 2012-03-04T10:23:07.977 に答える