ホームページ  >  に質問  >  本文

.htaccess は最後の 5 つのディレクトリを GET 値として書き換えます

次の 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/

にある .htaccess
P粉451614834P粉451614834251日前334

全員に返信(1)返信します

  • P粉384679266

    P粉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 にのみ一致します。

    返事
    0
  • キャンセル返事