0

私は次のようなレガシーURLを持っています:

mysite.com/index2.php?option=com_mtree&task=print&link_id=383&Itemid=168

そして、index2.phpが含まれているURLを(index2.phpの後に続くものに関係なく)リダイレクトしたいと思います。mysite.com/my-nice-url

私はもう試した

RewriteRule ^index2(.+) /my-nice-url/and-more/ [l,r=301]

しかし、それは/my-nice-url/and-more/?option=com_mtree&task=print&link_id=383&Itemid=168私が望まないものになります。誰かが少しガイダンスを提供できますか?

4

2 に答える 2

1

1)書き換えルールパターンはURLのパス部分のみを計算できます-クエリ文字列は個別に照合する必要があります(RewriteCondを介して)

2)デフォルトでは、新しいURLに独自のクエリ文字列がない場合、クエリ文字列は新しいURLに渡されます。解決策-空のクエリ文字列を提供します(?URLの最後に追加することにより):

RewriteRule ^index2\.php$ /my-nice-url/and-more/? [L,R=301]
于 2012-06-18T13:21:35.490 に答える
0

これは、希望どおりではない場合でも機能するはずです。

RewriteRule ^/index2(.+)$ /my-nice-url/and-more/?

リダイレクトApacheドキュメントから:

注:クエリ文字列

パターンはクエリ文字列と照合されません。代わりに、%{QUERY_STRING}変数でRewriteCondを使用する必要があります。ただし、クエリ文字列部分を含むURLを置換文字列に作成することはできます。置換文字列内に疑問符を使用するだけで、次のテキストをクエリ文字列に再挿入する必要があることを示します。既存のクエリ文字列を消去する場合は、疑問符だけで置換文字列を終了します。新しいクエリ文字列を古いクエリ文字列と組み合わせるには、[QSA]フラグを使用します。

于 2012-06-18T13:28:56.753 に答える