web-dev-qa-db-ja.com

削除されたフォーラムURLの410(削除済み)ステータスを示す書き換えルールは何ですか?

CMSからフォーラムシステムを削除し、検索エンジンが以前の投稿にアクセスするたびに410ステータスコードを返すようになりました。仕事をするためにいくつかの書き換えルールを使用する必要があることは知っていますが、それらを機能させることはできません。

削除したフォーラムのベースURLは次のとおりです。

投稿-> mywebsite.com/forum-viewtopic-p-xxx.html

トピック-> mywebsite.com/forum-viewtopic-t-xxx.html

サブフォーラム-> mywebsite.com/forum-viewforum-f-xxx.html

それを考慮して、これらは.htaccessに追加したコードのいくつかの例です:

RewriteCond %{QUERY_STRING} forum-viewtopic
RewriteRule .* - [G]

RewriteCond %{QUERY_STRING} forum-viewforum
RewriteRule .* - [G]

間違っていることはわかりませんが、これらのフォーラム投稿のHTTPヘッダーには、410エラーではなく「404 Not Foundメッセージ」が表示されます。

2
Jose

提供したサンプルURLに基​​づいて、ドキュメントルートフォルダ(通常はindex.htmlが配置されている)の.htaccessファイルの先頭にある次の行を使用すると便利です。

RewriteEngine On
RewriteRule ^forum-view(.*)$ - [NC,R=410,L]

これにより、Wordが大文字か小文字か、大文字と小文字が混在しているかに関係なく、フォーラムビューで始まるすべてのリンクが削除済みステータスにリダイレクトされます(これがR = 410の意味です)。また、後でルールが混乱しないようにするための一致がある場合、ルール処理がそこで終了することを示すためにLが含まれています。 。*は任意の文字または複数の文字を意味し、簡単にするためにそれを括弧で囲みました。

1
Mike

%{QUERY_STRING}は、URLの?の後のすべてを参照します。 URLに疑問符が付いていないため、一致していません。

URLにforum-viewtopicまたはforum-viewforumが含まれていることを確認して、410のステータスを返します。この単一のルールはそれを行う必要があります:

RewriteRule forum-viewtopic|forum-viewforum - [G]

さらに簡単な別のオプション:

RewriteRule forum-view - [G]

または、「「フォーラム」で始まるものすべて」と言ってほしいかもしれません。

RewriteRule ^forum - [G]

Mod_rewriteを使用する代わりに、mod_aliasのRedirectMatchディレクティブを使用することもできます。

RedirectMatch gone /forum.*
0