パーマリンク構造の変更-HTACCESSのリダイレクトはアーカイブリンクを破壊します

wordpress.stackexchange https://wordpress.stackexchange.com/questions/1343

  •  16-10-2019
  •  | 
  •  

質問

私がブログを始めたとき、パーマリンクと次の構造:

http://<domain>/%year%/%monthnum%/%day%/%postname%/

しばらく前に、私はパーマリンク構造を変更しました」http://<domain>/%postname%/" それだけ。

古いパーマリンク構造への外部リンクに取り組むために、htaccess-fileに次の行を追加しました。

RedirectMatch 301 /([0-9]+)/([0-9]+)/([0-9]+)/(.*)$ http://<domain>/$4

問題は、リダイレクトラインがアーカイブリンクを破壊することです。 「http://<domain>/2010/09/02「2010年9月2日からの投稿を表示する代わりに、フロントページにリダイレクトされます。

htaccessでリダイレクト指令を修正することは可能ですか、それともケーキを食べてそれを持っていることもできないでしょうか?

役に立ちましたか?

解決

mod_aliasのリダイレクトマッチは、mod_rewriteほど強力ではありません。ホストにmod_rewriteがある場合(たとえば、Permalinksがそれを使用します)、URLがアーカイブリンク形式にない場合にのみリダイレクトを作成できます。

そのケースをテストするために、あります RewriteCond リダイレクトコマンドを作成するには、 RewriteRule ... [R=301] 指令。

データに基づく例:

RewriteCond %{REQUEST_URI} !^/((20|19)[0-9]{2})/([0-9]{2})/[0-9]{2}$ [NC]
RewriteRule ^/([0-9]{4})/([0-9]{2})/([0-9]{2})/(.*)$ http://<domain>/$4 [R=301,L]

これはテストされていませんが、私はそれが仕事をするべきだと思います。 Quantifier({2})を使用して、期待する数値をよりよく指定しました。その隣には、rewitecondで20 ..と19年のみに一致するパターンを作成しました。

最初の行(条件、 RewriteCond)Archive-URLと一致しないことをチェックし、一致しない場合にのみ、リダイレクトを行うルールが実行されます。 RewriteRule 基本的にあなたと同じことをしています RedirectMatch 指令。

ライセンス: CC-BY-SA帰属
所属していません wordpress.stackexchange
scroll top