web-dev-qa-db-ja.com

を含むすべての検索リンクをWordpressの+にリダイレクトします

すべてのwordpress tagsを介してphpmyadminを削除し、投稿コンテンツのほとんどにtag linksが含まれています。 .htaccessを使用してタグリンクからsearchへ、

I.E

example.com/tag/stack-exchange/example.com/search/stack-exchange/にリダイレクトされます

一部のリンクでは正常に機能しましたが、検索リンクのURLにある-記号により、一部のリンクが投稿タイトルを引き出していないことに気付きました。-+に置き換えると、投稿コンテンツ(タイトル)が見つかりますが、リンクURLの-サインである場合、検索時に投稿コンテンツを引き出しません。

リンクURLに-を含むすべての検索URLを+にリダイレクトする方法はありますか

つまり、example.com/search/stack-exchange/example.com/search/stack+exchange/にリダイレクトします

.htaccessが望ましいです。

1

要求されたURLの.htaccessパスセグメントの後にあるすべての-+に置き換えるには、/search/ファイルの先頭で次のような操作を行います。

RewriteRule ^(search/[^-]*)-([^-]*-.*) /$1+$2 [N]
RewriteRule ^(search/[^-]*)-([^-]*)$ /$1+$2 [R=302,L]

最初のRewriteRuleは、1つのハイフンを除くすべてが+に置き換えられるまで(内部的に)ループします。 2番目のRewriteRuleは、最後のハイフンを置き換えて外部リダイレクトを起動します。あなたの例では、ハイフンが1つしかないところでは、リダイレクトはすぐに起こります。

302(一時的)リダイレクトを301(永続的)に変更します(それが意図的な場合) - 正常に動作することをテストした後にのみです。

UPDATE:リクエストされたURLに複数のハイフン(-)があるときに書き換えループに問題がある(そして結果としてリダイレクトされない)場合は、おそらくループが繰り返されるたびに、PATH_INFOがターゲットURLに追加されるという問題があります。これは最初のDPIディレクティブのRewriteRule(Discard Path Info)フラグで修正できます。例えば:

RewriteRule ^(search/[^-]*)-([^-]*-.*) $1+$2 [N,DPI]
RewriteRule ^(search/[^-]*)-([^-]*)$ /$1+$2 [R=302,L]

最初のRewriteRule置換のスラッシュ接頭辞は不要です。

1
MrWhite