次の URL があります:
https://sub.example.com/economy/billing/payment-check/434/khipu/1000/CLP/1673526088/
次の URL を反映するために、最後の 5 つのディレクトリを GET 値に変換したいと考えています:
https://sub.example.com/economy/billing/payment-check/?id=434&gateway=khipu&amt=1000&curr=CLP&ts_ttPageLoad=1673526088
次の .htaccess 行があります:
リーリーhttps://htaccess.madewithlove.com/ で、次のような書き換え結果が得られます:
https://sub.example.com/index.php?id=economy/billing/payment-check/434&gateway=khipu&amt=1000&curr=CLP&ts_ttPageLoad=1673526088
私は何を間違えたのでしょうか?ありがとう!
編集: https://sub.example.com/economy/billing/payment-check/
にある .htaccessP粉3846792662024-01-17 13:06:03
正規表現数量子 *
デフォルトは greedy であるため、可能な限り消費し、必要に応じてバックトラックします。そのため、$1
には economy/billing/payment-check/434
が含まれています (つまり、正規表現を可能な限り満たします)。ただし、これは、.htaccess
ファイルがドキュメント ルートにあることを前提としています (これは、「MWL テスター」が想定していることです)。
単一のパス セグメントのみを一致させたい場合は、キャプチャするサブパターンからスラッシュを除外します。 ([^/] )
.
また、ルールの性質に基づいて、この .htaccess
ファイルは /economy/billing/payment-check/
サブディレクトリ (根)? 「MWL テスター」ツールは、.htaccess
ファイルがドキュメント ルートにある (変更できない) ことを前提としています。実際、.htaccess
ファイルがサブディレクトリにある場合、これはサーバー上で「機能」しますが、URL の変更を考慮すると一致しすぎる可能性があるため、これは最適ではありません。
.htaccess
ファイルが /economy/billing/payment-check/.htaccess
にある場合は、次を使用します。
正規表現 [^/]
スラッシュを除くコンテンツと一致します。
ただし、ルールがルート .htaccess
ファイル内にある場合 (MWL テスターの予想通り)、ルールは次のようにする必要があります:
最初にキャプチャされたサブパターンが URL パスになり、これが replacement 文字列 (2 番目の引数) で繰り返されることに注意してください。これは、2 番目のパラメータで URL パスを手動で繰り返すことを避けるだけです。
URL では、パス セグメントに特定のデータ型が必要のようです。たとえば、1 番目、3 番目、5 番目の「引数」は単なる数字のように見えます。この場合は、具体的に数字のみを一致させる必要があります。同様に、4 番目の「param」は大文字、2 番目は小文字です。具体的には、次のように書き換えることができます (サブディレクトリ内の .htaccess ファイルを使用):
リーリーこれは、期待する URL format にのみ一致します。