.htaccess は最後の 5 つのディレクトリを GET 値として書き換えます
P粉451614834
P粉451614834 2024-01-17 00:29:03
0
1
387

次の 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粉451614834
P粉451614834

全員に返信(1)
P粉384679266

正規表現数量子 * デフォルトは 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
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!