3

現在、次のような URL を使用して WordPress でブログをセットアップしています。

www.domain.com/blog/?pid=384092817

これは私が何かを知る前のことでした。現在、そこにはかなりの量のコンテンツがあり、URL 構造を次のように変更したいと考えています。

www.domain.com/my-post-title-384092817

ユーザーが最初の URL にアクセスしたときに 2 番目の URL への 301 リダイレクトを取得するように、.htaccess と mod の書き換えを設定する方法はありますか? WordPress のアドレス (URL) 設定を www.domain.com/blog から www.domain.com に変更し、パーマリンク設定を /%postname%-%post_id% に変更することはわかっていますが、古い URL にリダイレクト先を指定するにはどうすればよいですか?新しいもの?

4

2 に答える 2

4

実際、ユーザーが2番目のURLにアクセスすると、最初のURLに書き換えられるということですか?それはで行うことができます

RewriteRule /blog/.+-(\d+)$ /blog/?pid=$1

古いURLから新しいURLに301リダイレクトを送信する場合、.htaccessファイルを使用して実際に送信することはできません。その理由は、Apacheのmod_rewriteが投稿のタイトルにアクセスできないため、URLに挿入するタイトルがわからないためです。PHPでそのリダイレクトを行う必要があります。

編集:あなたは何を知っていますか、実際にはそれは完全に真実ではありません。Apacheに任意のプログラムに書き換えを実行するように指示するなど、RewriteMapディレクティブを使用してかなりクレイジーなことを行うことができます。そのようにして、たとえば、データベースの動作を実行してタイトルが何であるかを把握するPHPスクリプトを作成できます。それに基づいてURLを適切に書き換えます。しかし、それは非常に複雑な解決策のように思われるので、それを行うことはお勧めしません。PHPから直接リダイレクトを送信する方がはるかにクリーンで簡単です。

于 2009-03-12T00:49:19.100 に答える
3

WP のバージョンによっては、Permalink リダイレクト プラグインを使用するだけで、WordPress 内で mod_rewrite なしでうまくいくはずです。ただし、WordPress 2.3 の時点で、これの多くは自動的に機能するはずです。その時点で、すべての /blog/... リクエストをルートにリダイレクトするだけで済みます。これは、おおまかに次のように mod_rewrite を介して実行できます。

RewriteRule ^blog(.*) $1 [QSA]
于 2009-03-17T13:53:43.553 に答える