4

最近、静的サイトを WordPress ベースの Web サイトにかなり頻繁に移行していることに気づきました。テスト サーバーでの WordPress Web サイトの開発が完了したら、現在の Web サイト ドメインにインストールしたいと考えていますが、サイトが稼働するまで、古い静的サイトには影響を与えません。

私の考えは、現在のWordPress以外のWebサイトをフォルダーに移動し、/old/すべてのリクエストをこのフォルダーに書き直すことです(SEOの目的で、すべてのURLを同じに保ちます)。

私自身と他の許可された人が通過できるようにするために、Cookie(静的IPアドレスに依存できないため、単純な「ログイン」phpファイルを介して設定されます)を確認したい、または現在の日付と時刻がライブの後かどうかその後、WordPress の書き換えルールに任せて、WordPress Web サイトへのアクセスを許可します。

これにより、現在または古いサイトに簡単なカウントダウン タイマーを追加することもできます。その後、新しいサイトはライブ日に自動的にライブになります。

私の単純な login.php スクリプトは次のようになります。

<?php
setcookie("login", "loggedin", time()+3600,"/");
?>
<h3>Welcome, you are logged in</h3>
<p><a href="/">Click here to visit the home page</a></p>

これを実現するには、次の方法が最善の方法であると考えましたが、機能しません (内部サーバー エラーが発生します)。最初のセクションでは、ログイン Cookie が存在するかどうかを確認します。存在しない場合、現在の日時が 2012 年 7 月 20 日の午後 8 時より前であれば、/old/フォルダーへのすべての要求を書き換えます。/old/フォルダーを除外するように、WordPress の書き換えセクションを変更しました。

RewriteCond %{HTTP_COOKIE} !^.*login.*$ [NC]
RewriteCond %{TIME} < 20120720200000
RewriteCond %{REQUEST_URI} !^/old/
RewriteRule (.*) http://domain.com/old/$1 [L]

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_URI} !^/(old/.*)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

誰かが私が達成したいことを手伝ってくれますか?

4

2 に答える 2

3

RewriteCondディレクティブは2 つの引数を取りますが、比較時に 3 つを指定しているため、 apache%{TIME}500 サーバー エラーを返す原因となっています。そのようなダムの)。そのため、その行は次のようにする必要があります。

# no space here -----V
RewriteCond %{TIME} <20120720200000

これで 500 サーバー エラーに対処できるはずです。

ルールに関するもう 1 つの点は、ターゲットに を含めているため、ルールのターゲットhttp://domain.com/old/$1によって Apache が 302 リダイレクトされることですhttp://domain.com。内部的に書き換える (ブラウザのアドレス バーの URL が変わらないようにする) 場合は、そのビットを削除する必要があります。

于 2012-07-15T20:18:53.267 に答える
0

より簡単な方法は、メンテナンスモードと呼ばれるプラグインをインストールすることです

次に、テーマ用の 503.php を作成します。

これをファイルの先頭に追加します。

<?php if (!is_user_logged_in())
{
    header("Location: http://example.com/old");
}
else
{
  //WHATEVER YOU LIKE
}?>

そうすれば、ログインしたユーザーは WP サイトを閲覧でき、他のユーザーは /old Web サイトにリダイレクトされます。

ユーザーは事前に @ http://example.com/wp-login.phpにログインする必要があります

于 2012-07-14T22:29:26.953 に答える