7

htaccessファイルで301リダイレクトを実行して、一部のファイルを新しいドメインにリダイレクトする方法を理解しようとしています。これが私が行う方法を知る必要があることです:

古いURL:http ://www.example.com/index.php?page=news&id=2366

新しいURL:http ://www.example2.com/news.php?name=23546

リダイレクトを自動的に作成する必要はありません。リダイレクトする必要のあるページをhtaccessファイルにハードコーディングできます。「標準」の301リダイレクトはクエリ文字列では機能しないことを読んだので、使用する形式がわかりません。

基本的にこれが私がやりたいことですが、これまでの私の研究からは、このようにできるようには思えません。

redirect 301 /index.php?page=news&id=2366 http://www.example2.com/news.php?name=23546
4

2 に答える 2

19

次のようなクエリ文字列の一致条件で書き換えルールを使用できます。

RewriteEngine On
RewriteCond   %{REQUEST_URI}    ^/index.php$
RewriteCond   %{QUERY_STRING}   ^page=news&id=2366$
RewriteRule   ^(.*)$ http://www.example2.com/news.php?name=23546   [R=301,L]

これがどのように機能するかについての詳細は、このブログページをチェックしてください。

于 2012-04-13T06:07:27.103 に答える
0

同じ問題が発生しましたが、他のパラメーターを破棄する必要があったため、さらに複雑になりました。

このような:my-old-page.php?a=1&b=2&c=3

文字列の1つを使用し、他の文字列を破棄する必要がありますが、その解決策は、最後のパラメーター(c = 3)を使用する場合にのみ機能しました。他の(a=1またはb=2)を使用したい場合は、404になります。多くの苦労と検索の結果、答えが見つかりました。

RewriteCond %{QUERY_STRING}  ^.* ?b=2.* ?$ (without space after the *)

RewriteRule (.*)  http://www.my-webpage.php/new-location-2?  [R=301,L]

".*?"解決策は、使用するパラメーターの前後に追加することです。

これが最善の解決策かどうかはわかりませんが、機能します。

于 2015-10-15T11:11:08.097 に答える