1

この質問はすでに数回尋ねられているかもしれませんが、通常の index.php の代わりにすべてのリクエストを index_failsafe.php ファイルに送信する .htaccess ファイルを使用して、CodeIgniter の特定のソリューションが必要ですが、URL が「admin」で始まっていません。例:

  1. www.myhost.com/admin -> 通常どおり動作
  2. www.myhost.com/welcome -> フェイルセーフ ページに送信

ケース1:

RewriteRule ^.*$ index.php/$1 [L] 

ケース 2:

RewriteRule ^.*$ index_failsafe.php/$1 [L] 

私の書き換え条件は次のとおりです。

   RewriteEngine On

    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d

これを行うことは可能ですか?

4

2 に答える 2

11

個人的には IP で行っているため、サイトをオフラインにすることはできますが、完全にアクセスできます (新しい機能をテストし、元に戻す前に機能することを確認するため)。

RewriteEngine on

    # For maintenance:
    # If your IP address is 1.1.1.1 - then dont re-write
    RewriteCond %{REMOTE_ADDR} !^1\.1\.1\.1
    # If the person is requesting the maintenance page, also dont rewrite (prevent loops)
    RewriteCond %{REQUEST_URI} !/maintenance.html$ 
    # Otherwise rewrite all requests to the maintenance page
    RewriteRule $ /maintenance.html [R=302,L]


    # do not rewrite links to the documentation, assets and public files
    RewriteCond $1 !^(assets)

    # do not rewrite for php files in the document root, robots.txt or the maintenance page
    RewriteCond $1 !^([^\..]+\.php|robots\.txt|maintenance\.html)

    # but rewrite everything else
    RewriteRule ^(.*)$ index.php/$1 [L]

!^1.1.1.1 を現在の IP に変更するだけです。すなわち!^121.65.56.65

自分の IP がわからない場合は、「what is my IP」とグーグルで検索すると、最初のヒットとして表示されます。

しかし、あなたの特定の質問に関しては、これはうまくいくはずです:

RewriteCond %{REQUEST_URI} !/admin$ 
RewriteRule $ /index_failsafe.php [R=302,L]

編集:

于 2012-05-06T17:07:39.197 に答える