1

次のようなものから URL を書き換える方法を見つけようとしています: example.com/collection.php?collection=1

へ: example.com/collection-name.php

最近、e コマース サイトを再設計したので、古い URL を新しい URL にリダイレクトする必要があります。書き換えられた URL で collection=1 の値を使用する方法についての指示をたくさん見てきましたが、値の代わりにテキストを使用する方法については知りませんでした。リダイレクトする必要があるコレクション値は 5 つだけですが、さらに、テキストとして書き換え/リダイレクトする必要がある複数のパラメーターを持つ古い URL もあります。それは理にかなっていると思います。

したがって、最初のリダイレクト設定を取得できれば、それらをすべて解決できると思います。

他の/より複雑な古い URL は次のようになります: example.com/collection.php?collection=1&product=2&item=3

次にリダイレクトする必要があるのは、example.com/collection-name/sub-collection-name/product-name.php です。

これを行う方法が正確にわかりません。.htaccess ファイルに行ごとに書き込みたくありませんが、これを達成する方法が他にわかりません。

前もって感謝します。アンディとこの件に関するすべての助けに感謝します!

EDIT------------------------------------ に提供された情報に基づく私の新しい書き換え条件とルールは次のとおりです自分。これは、3 つの個別の RewriteMap を使用して、すべてのクエリ パラメータを含む URL のルールになります。

RewriteCond %{QUERY_STRING} collection=([^&]+)&product=([^&]+)&item=([^&]+)
RewriteRule collection.php shop/${categorymap:%1}/${rangemap:%2}/${productmap:%3}\.php [R=301,L]

何かがおかしい、または何かを見逃した場合はお知らせください。各クエリ パラメータに $1、$2、$3 を使用する必要があるかどうかはわかりませんでした。私はまだ書き換えのあるNOOBです。ありがとう!

編集 - - - - - - - - - - - - - - - - - - - - - - - - - -----

私の .htaccess ファイルで次のコードを使用します。

RewriteCond %{QUERY_STRING} collection=([^&]+)
RewriteRule collection.php shop/${categorymap:%1}\.php [R=301,L]

「example.com/collection.php?collection=1」で始まる私の URL

次のように書き換えられています: example.com/shop/.php?collection=1

私はこれで少し迷っています。リダイレクト マップが読み取られていない可能性がありますか? それとも別のものですか?助けてくれてありがとう。

4

1 に答える 1

1

RewriteMapの使用を検討したいとします。コレクション、サブコレクション、および製品に必要なマップを指定してから、各番号のテキストを検索できます。

したがって、仮想ホスト構成でRewriteMapを次のように定義します。

RewriteMap categmap txt:/path/to/category/map.txt

その場合、書き換えルールは次のようになります。

RewriteCond %{QUERY_STRING} collection=([^&]+)
RewriteRule collection.php ${categmap:%1} [L,R]

RewriteCondより複雑なケースにさらにsを追加し、それらから個別のルールを作成します。より具体的なルールを最初にファイルに配置し、次により一般的なルールを配置します。

于 2012-05-29T19:05:44.000 に答える