0

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);
4

2 に答える 2

0

これを試さない理由:

RewriteCond %{QUERY_STRING} ^(p=1234|p=111|p=123;0;0;0latestnews|feed=rss&p=123)
RewriteRule ^news/$ http://domain.com/news/ [R=301]
于 2013-07-18T06:55:16.217 に答える