これらのURLがあります:
http://www.example.com/example.html%20text-decoration:%20none%E2%80%9D%3Eexample.com%3C%20%3C/i%3E%3C/span%3E%3Cbr%3E%3Cbr%3E%3Cbr%3E%3Ctable%20bgcolor=
http://www.example.com/examindex/?p=2343543
。htaccessファイルで301リダイレクトを使用してこれらのリンクをリダイレクトするにはどうすればよいですか? 301リンク1をhttp://www.example.com/example.html
にリダイレクトしたい
redirect 301 /example.html%20text-decoration:%20none%E2%80%9D%3Eexample.com%3C%20%3C/i%3E%3C/span%3E%3Cbr%3E%3Cbr%3E%3Cbr%3E%3Ctable%20bgcolor= http://www.example.com/example.html
リンク2をhttp://www.example.com/examindex/
にリダイレクトしたい。私はもう試した:
redirect 301 /examindex/?p=2343543 http://www.example.com/examindex/
しかし、それは機能していません。
Redirect
(mod_alias)は、%デコードされたパスと一致します。また、このディレクティブを使用してクエリ文字列を一致させることはできません。したがって、これらのリダイレクト(%デコードされたパスに対しても一致)の両方にmod_rewriteを使用するのが最善です。 mod_aliasとmod_rewriteの両方のディレクティブを混在させることは決して良い考えではありません。
.htaccessの上部で、書き換えエンジンを有効にします...
RewriteEngine On
「リンク1」の場合、マッシュアップリンク全体と一致する必要はなく、最初のビットと一致するだけであると想定します。 <space>text-decoration
で十分だと思いますか? %デコードパスと照合するため、スペースは文字通りスペース()であり、%20
ではありませんが、スペースは正規表現(\
)でエスケープする必要があります。
RewriteRule ^example\.html\ text-decoration /examindex/ [R=301,L]
「リンク2」の場合、クエリ文字列と一致させるためにRewriteCond
ディレクティブを使用する必要があります。クエリ文字列は、パターンマッチングの前にURLパスから削除されます(これはmod_alias Redirect
にも適用されます)。
RewriteCond %{QUERY_STRING} =p=2343543
RewriteRule ^examindex/$ /examindex/? [R=301,L]
クエリ文字列を削除するには、置換の末尾の?
が必要です。 (または、Apache 2.4+では代わりにQSD
フラグを使用できます)