web-dev-qa-db-ja.com

単一のファイルを除くすべての.htmlファイルの410ゴーンステータスを返しますか?

少なくとも1つこの問題の些細な解決策があるに違いないが、私はそれらのいずれかをまだ理解していない。

簡単に言えば、私が達成しようとしているのは、サーバー上に。htmlファイルがなくなったことを検索エンジンに通知することです(410 Goneステータスを使用)except Google Search Console検証ファイル用(googlerandomstringofchars.html)。

ルートの.htaccessファイルに追加したものを次に示します。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !^googlerandomstringofchars.html$
RewriteRule ^.*\.html$ - [R=410]

私は基本的にgooglerandomstringofchars.htmlを除外しようとしていたが、他の。htmlファイルに対して410ステータスを返していました。

WebサイトはWordPressドリブンですが、.htaccessファイルの最初にディレクティブを追加することを確認したため、WPが干渉して出力される可能性がある前に評価されますその派手な404-Not Foundページ。

期待どおりに機能しません。何らかの理由で、存在しない.htmlファイル、既存の.htmlファイル、またはGoogle .htmlファイルにアクセスしようとすると、WordPressが「空想の」404ページを返します。

しかし、why?私の指令の欠陥はどこにありますか?

2
GeekRider

つかいます:

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/googlerandomstringofchars.html$
RewriteRule ^.*\.html$ - [R=410,L]

http://httpd.Apache.org/docs/current/mod/mod_rewrite.htmlREQUEST_FILENAMEによると、fullファイルのローカル名。そのため、/var/www/html/example.com/googlerandomstringofchars.htmlのようなものになります。代わりに、スラッシュで始まるWebサーバー上の相対パスであるREQUEST_URIを使用する必要があります。条件をREQUEST_URIに変更し、スラッシュを追加しました。

また、R=410Lが必要なので、最後に使用される書き換えルールになります。そうしないと、他の書き換えルール(WordPressのルールなど)も実行され、上書きされる可能性があります。このLをルールに追加しました。

このブロックが。htaccessファイルの上部近くにあることを確認する必要があります。 WordPressのブロックなど、他の書き換えブロックの前に移動する必要があります。

1