少なくとも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?私の指令の欠陥はどこにありますか?
つかいます:
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=410
にL
が必要なので、最後に使用される書き換えルールになります。そうしないと、他の書き換えルール(WordPressのルールなど)も実行され、上書きされる可能性があります。このL
をルールに追加しました。
このブロックが。htaccessファイルの上部近くにあることを確認する必要があります。 WordPressのブロックなど、他の書き換えブロックの前に移動する必要があります。