0

ブログの位置を移動する必要があり、古いリンクを介してすべてのリンクをキャッチし、新しいリンクにリダイレクトするようにしています。

ブログはhttp://example.com/からhttp://example.com/blog/に移動さまし

URLを記憶に残るようにするために、私が実行しないことに決めた投稿名の前の日付(デフォルト)で生成するために使用されるURL。

問題は?があるということです 元のURLの文字(私が使用しているCMSによって生成されたデフォルトのURLであり、リダイレクトで問題が発生しています:

RewriteRule ^post.php?s=2012-01-01-blog-post$ /blog/blog-post? [R=301,L]

だから私は脱出する必要がありますか?どういうわけか、私はどのように理解することはできません!

?を回避するより一般的なリダイレクトを使用できます。ただし、記事自体ではなく、リストページにリダイレクトされます。

RewriteRule ^post.php$ http://tempertemper.net/blog/? [R=301,L] 

どうすればそれを読ませることができますか?URLの一部として!?

ご覧いただきありがとうございます!

マーティン:)

4

1 に答える 1

1

RewriteCondを使用してQUERY_STRING値の存在を確認し、クエリ文字列がブログパターンと一致すると仮定して、ブログ名をキャプチャし、キャプチャした値をRewriteRuleで使用する必要があると思います。このようなもの:

RewriteCond ${QUERY_STRING} ^s=[0-9]{4}-[0-9]{2}-[0-9]{2}-(.*)$
RewriteRule ^post.php$ /blog/%1 [R=permanent,L]

%1は、一致するRewriteCondの最初のキャプチャパターンを参照します(RewriteCondが一致しない限り、RewriteRuleはトリガーされません)。

これが必要な理由は、RewriteRuleがクエリ文字列を要求パスの一部として認識できないため、RewriteRuleの前にRewriteCondを使用してクエリ文字列をチェック(およびキャプチャ)する必要があるためです。

于 2012-08-26T16:41:55.863 に答える