2016-03-08 14 views
6

ウェブサイトのすべてのページを宗教上の理由から日曜日に閉鎖するというページにリダイレクトするスクリプトを探しています。日曜日にウェブサイトを閉鎖するにはどうすればいいですか

日曜日のみリダイレクトする必要があります。週の他の曜日には、サイトは通常どおり機能するはずです。

サーバーレベルの.htaccessファイルまたはPHPスクリプトでこれを行いたいとします。

私はこのような何かを想像することができます:それはPHP経由でそれを行うにはかなり良いです

$day = date('N'); //1 (for Monday) through 7 (for Sunday) 
if($day == 7){ 
    header("Location: sunday_page.php"); 
} 

$day = date('w'); 
if ($day == 0) { // Sunday... 
    header("Location: http://www.domain.com/closedonsunday.html"); 
} 

答えて

1

あなたはdate()と曜日の数値表現を取得することができますし、リダイレクトすることをあなたのヘッダーの上にこのコードを置くことによって。

1

ブラウザ設定に応じて、ユーザがかもしれないので、でこれを行うことはありません。月曜日以外の日にキャッシュされたコピーを取得する可能性があります。

includeを使用すると、別のファイルのスクリプトを実行できます。各ページの上部に次の行を追加します。

include 'path/to/closedonsunday.php'; 

そしてclosedonsunday.phpのような非常に簡単なチェックしています:

if (date('w') == 0) { 
    /* ... message here ... */ 
    exit; 
} 

exitを、それはPHPが死んで停止しますように、ここで重要な部分です。

タイムゾーンにも注意する必要があります。サーバーの時計が正しく設定されていること、スクリプトで使用するタイムゾーンがわかっていることを確認してください。

+0

こんにちは、 特に、キャッシュされたコピーとサーバークロックの設定については、ありがとうございます。 私は、各ページの上部にインクルードを置くのは、1.000ページ以上のウェブショップのためのものだと思います。 あなたが懸念している限り、1ページのソリューションはありますか? – Anthony

+2

アプリケーションの設計によって異なります。私は常に各ページに単一の 'include'ステートメントを持っているので、認証とデータベース接続のようなものは1つの場所でしか処理できません(これは「単一ページソリューション」になります)。もし現在あなたが何かを 'インクルード 'していない1,000ページを超えるものがあれば、それをすべて修正する作業がたくさんあります。その場合、ここでの別の答えの '.htaccess'アプローチはあまり働かないでしょう。 – timclutton

1

私の意見では、.htaccessファイルを使用する必要があります。 .htaccessのでの日付と時刻の値は形で来る

% {} TIME_XXXX XXXXは、日付や希望する時間の種類である

。場合

あなたは今日の日付が含まれているものに、一般的なURLをリダイレクトしたい場合は、使用する可能性があります:

のRewriteRule ^記事/今日の$ /ポスト/%{TIME_YEAR} - %{TIME_MON} - %{} TIME_DAYに/ポスト/今日の記事/のようなものにリダイレクトされてしまう

/2015年8月27日

日付(と時間)の後にページをリダイレクトしたい場合は、パスワードですあなたは次のようなものを使うことができます。 2015年8月27日にリダイレクトが行われます。日付を整数に変換して比較する簡単な数値比較を使用します。あなたはスイッチを使用する方法その後、PHPを使用したい場合は、リンクTutoriallink 2

を使用することができ、よりチュートリアルについて

RewriteCond %{TIME_YEAR}%{TIME_MON}%{TIME_DAY}%{TIME_HOUR} >2015082709 
RewriteRule ^$ /destination/url.html [R=301,L] 
あなたの場合

RewriteCond %{TIME_WDAY} = 0 // condition 
RewriteRule URL on which you wants to redirect 

。後で他の日にリダイレクトしたい場合は、ここでそれを管理できます。

$day = date('N'); //1 for Monday , 2 for Tuesday ... 7 For Sunday 
//N is The ISO-8601 numeric representation of a day 
switch($day){ 
case 1: 
    header('location: site for Monday');break; 
case 2: 
    header('location: site link for Tuesday'); break; 
} 
. 
. 
case 7: 
header("Location: http://www.domain.com/closedonsunday.html"); break; 
default: 
    code to be executed if day is different from all labels; // it is not possible in this case :) 

}

+0

あなたのhtaccessチュートリアルをありがとう。 は毎週日曜日サイトにリダイレクト右こと私アムそれはこれに来る: するRewriteCondの%{TIME_DAYは} 0 のRewriteRule^$の/destination/url.htmlを= [R = 301、L] – Anthony

+1

なしTIME_DAY現在の日付を表します。あなたはTIME_WDAY の現在の週日(0〜6)にする必要があります。 – Deep

+0

スイッチケースを使用することもできます。スイッチは常にIf else条件よりも優れています。 – Deep

6

あなたは.htaccessに以下のルールを使用することができます。

RewriteEngine on 

#--if WDAY ==0--# 
RewriteCond %{TIME_WDAY} 0 

#--redirect the domain to /closedonsunday.html--# 
RewriteRule ^((?!closedonsunday\.html).*)$ /closedonsunday.html [L,R] 

%{TIME_WDAY}変数は週(0-6)の日を表します。

条件が満たされている場合、上記のコードはすべてのリクエストを/closedonsunday.htmlにリダイレクトします。

+0

それは動作します!しかし、ホームページ内のすべてのページではない。ここであなたの指導をお願いしますか? – Anthony

+1

@Anthonyあなたの必要性に合うようにrewriteRuleの正規表現正規表現を調整します。 [docs](http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriterule)の構文を読んでください(しかし、それは基本的にpcreです) –

+0

@SáT 。 '最良の' 結果はERR_TOO_MANY_REDIRECTS ように500内部サーバーエラーを取得しても オプションのようなコード+ FollowSymLinksを RewriteEngine するRewriteCondの%{REQUEST_URI}!/ closedonsunday $ のRewriteRule $ /closedonsunday.html [R = 302、L]に 私の状況では動作していないようです。 – Anthony

関連する問題