SEO の理由から、404 ページのリストを www.domain.com/news/ にリダイレクトしたいと考えています。
次のコードを使用して、www.domain.com/news/?p=1234 や www.domain.com/news/?p=111&replytocom=333 などのページを正常にリダイレクトします。
RewriteCond %{QUERY_STRING} ^(p=1234|p=111)($|&)
RewriteRule ^news/$ domain.com/news/ [L,R=301]
しかし、これらのページのいくつかには非常に奇妙なクエリ文字列が含まれており、それらをクエリして htaccess で削除する方法がわかりません。
www.domain.com/news/?p=12345;0;0;0;latestnews
www.domain.com/news/?feed=rss&p=123
www.domain.com/news/?p=123%3B0%3Blatestnews
/?p= を含むすべての URL を /news/ にリダイレクトしたくはありません。それらの一部は特定のページにリダイレクトされるからです。
よろしくお願いします。
OK私はこれら2つの解決策を思いついた
www.domain.com/news/?p=12345;0;0;0;latestnews
www.domain.com/news/?p=123%3B0%3Blatestnews
p=123;0;0;0latestnews を条件に追加するだけで、コードは次のように記述されます
RewriteCond %{QUERY_STRING} ^(p=1234|p=111|p=123;0;0;0latestnews)($|&)
そして、彼らは働いています!
まだ対処法を模索中
www.domain.com/news/?feed=rss&p=123
誰か解決策があれば教えてください!どうもありがとう!
feed=rss&p=123 の答えを見つけました。申し訳ありませんが、私のサイトが wordpress サイトであることを忘れていました。
そのため、ブラウザはこのページを 404 として認識していないか、サーバーの下のページでさえ認識していないようです。ページは空の RSS ページのように見えます。そこで、RSS はあまり使用しないので無効にし、PHP 経由でリダイレクトすることにしました。これは私の functions.php のコードです
function wp_disable_feed() {
header('Location: http://www.mysite.com/news/');
//wp_die( __('Sorry, no feeds available, return to <a href="'. get_bloginfo('url') .'">homepage</a>') );
}
add_action('do_feed', 'wp_disable_feed', 1);
add_action('do_feed_rdf', 'wp_disable_feed', 1);
add_action('do_feed_rss', 'wp_disable_feed', 1);
add_action('do_feed_rss2', 'wp_disable_feed', 1);
add_action('do_feed_atom', 'wp_disable_feed', 1);