web-dev-qa-db-ja.com

ブロガーからワードプレスへの移行のための301リダイレクトディレクティブ

こんにちは私はBloggerからWordPressに私のブログを移動しようとしていると私はhttp://www.example.com/post-name/のようなシンプルできれいなURL構造を維持したいと思います

ブロガーでは、私は次のURL構造を持っています:

  1. www.example.com/2017/02/post-name.html
  2. www.example.com/2017/02/post-name.html?m=1
  3. www.example.com/2017/02/post-name.html?m=0

WordPress用のリダイレクトプラグインを使用して、BloggerからWordPress上のきれいなURLに構造体http://www.example.com/post-name/を使用してリダイレクトすることができます。

次の正規表現を使っています

  • ソースURL:^/\d{4}/\d{2}/(.*).html+.*
  • ターゲットURL:http://www.example.com/$1/

上記のセットアップは完全にうまくいきましたが、私は.htaccessファイルを編集することによってリダイレクトサーバー側を使用して同じことを達成したいです、そしてこのツールはそれを.htaccessフォーマットでエクスポートするオプションをサーバーで更新します。しかし、エクスポートされた書き換え規則は機能しません。

これがリダイレクトプラグインからの書き換えです。

# Created by Redirection
<IfModule mod_rewrite.c>
RewriteRule ^\d{4}/\d{2}/(.*).html+.* http://www.example.com/$1/ [R=301,L]
</IfModule>
# End of Redirection

.htaccessファイルの式に何をすべきですか、または問題がありますか?

1
nasirs
 RewriteRule ^\d{4}/\d{2}/(.*).html+.* http://www.example.com/$1/ [R=301,L]

これは「うまくいく」ように見えますが、整理できることがいくつかありますが、クエリ文字列(m=1またはm=0)はURLに残ります。

また、301秒はブラウザによって激しくキャッシュされるので、テストする前にブラウザのキャッシュをクリアしたことを確認してください。このため、302(一時的)リダイレクトでテストして301に変更する方が簡単な場合があります。 (ヒント:ブラウザの[オブジェクトインスペクタ]を開いて、[キャッシュを無効にする]オプションをオンにしてテストします。)

このリダイレクトは、あなたの.htaccessファイルの先頭、before WordPressフロントコントローラー(すなわちbefore# BEGIN WordPressセクション)にも行く必要があります。

代わりに次のことを試してください。

RewriteRule ^\d{4}/\d{2}/(.+)\.html$ http://www.example.com/$1/? [R=301,L]

patternの末尾の+.*はあまり意味がありません(ただし問題にならないはずです)。これは単にlname__(of htmlname__)を1回以上繰り返し、その後に何かを続けます。 .htmlは常にURLパスの末尾です(クエリ文字列はURLパスの一部ではありません)、これは実際に$(文字列の最後のアンカー)が続くべきです。

RewriteRulesubstitutionの最後にある?は、 "空の"クエリ文字列を作成することによって、ターゲットURLからクエリ文字列を効果的に削除します。あるいは、Apache 2.4以降では、代わりにQSDname__フラグを使用できます(Query String Discard)。すなわち。 ... http://www.example.com/$1/ [QSD,R=301,L]

更新: /使用しても安全ですか...

まあ、あなたはそれが "あまりにも"一致していないとあなたが興味を持っているURLだけに一致することを確認するために正規表現でより具体的かもしれません。例えば、上記のディレクティブもフォームのURLに一致します:example.com/2017/02/foo/bar/post-name.htmlこれは(おそらく無効な)/foo/bar/post-nameへのリダイレクトになります。あるいはexample.com/2017/02/1111/22/post-name.htmlでも、二重のリダイレクトになります。これはまったく問題にならないかもしれません、実際、これはあなたの状況次第では望ましいかもしれません。ただし、RewriteRuleパターンを変更することで、post-nameWordの文字a-zA-Z0-9_)、およびハイフンに制限することもできます。例えば:

RewriteRule ^\d{4}/\d{2}/([\w-]+)\.html$ http://www.example.com/$1/? [R=301,L]

しかし、そうでなければ、それが「安全でない」とは思われません。

0
MrWhite