web-dev-qa-db-ja.com

インデックス以外のすべてを410としてリダイレクトするにはどうすればよいですか?

サイトがシャットダウンし、ユーザーに410リダイレクトを行う必要があります。同じドメインに小さな1ページの置換サイトが設定されており、カスタム410エラーページがあります。新しいindex.htmlを指すフロントページを除き、すべてのページビューが410で応答され、エラーページにリダイレクトされるようにします。

。htaccessの内容は次のとおりです。

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule !^index\.html$ index.html [L,R=410]

これは、1つのことを除いて機能します:ドメイン名を入力すると、410ページが表示されます

www.example.com/index.htmlを使用すると、インデックスページが表示されますが、www.example.comだけで410になります。これを修正するにはどうすればよいですか。

2
Mikko Saari

あなたがやろうとしていることに従うなら、これはうまくいくと思います。

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* - [L,G]

リソースが存在しない場合(ファイルでもディレクトリでもない場合)、410を送信します。

2
matthew

maintenance.html(または選択したサーバー側言語に必要なファイル拡張子)と呼ばれるページを作成し、次のコードを使用します。

<IfModule mod_rewrite.c>
 RewriteEngine on
 RewriteCond %{REQUEST_URI} !/maintenance.html$ [NC]
 RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif) [NC]
 RewriteRule .* /maintenance.html [R=410,L]
</IfModule>

これは、ブラウザでどのページをリクエストしたかに関係なく、常にmaintenance.htmlを表示します。

1
John Conde