問題タブ [locationmatch]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
regex - Apache LocationMatch 正規表現
私の問題
Tomcat のパスと一致しないだけでなく、互いに類似したパスを持つ、動的アプリケーション用の Tomcat への Apache HTTP Server (v2.4.10) プロキシ リクエストが必要です。例えば:
/products/<category>/<sub-category>/<sub-sub-category>/<product-id>.htmlプロキシ先:http://mycluster/pf/<product-id>.html
...そしてまた...
/products/<category>/<sub-category>/<sub-sub-category>/<anything-not-ending-in-html>プロキシ先:http://mycluster/search/<anything-not-ending-in-html>
私の試み
これを処理するために LocationMatch 正規表現を使用しようとしていますが、完全には成功していません。*.html次の LocationMatch 正規表現は、単独で機能します (要求を にプロキシし<tomcat>/pf/*.htmlます)。
これは、次の例のパスを使用して URL を渡します: /products/aaa/bbb/ccc/ddd3456.html(正しい)
ただし、以下の正規表現も有効にすると:
/products/aaa/bbb/ccc/404 ページで結果にアクセスしようとしています。ここでは、「/products/aaa/bbb/ccc/」へのリクエストのうち、.html で終わらないものはすべて /search/ に渡されることを期待しています (後続のパス情報を含む: .../search/ など)。比較 )
私の質問
何が悪いのか、よくわかりません。Rubularによると、提供された正規表現は正しいです。
ここで何が欠けていますか?
これを解決するためのアドバイスをいただければ幸いです。
regex - Apache LocationMatch 正規表現は重複するスラッシュを無視します
URL の先頭に余分なスラッシュがあると、Apache の LocationMatch ディレクティブで奇妙な動作が発生します。Apache docs によると、私が正しく読んでいれば、これはうまくいくはずです:
ただし、次の URL を入力すると、バックエンド ホストにも転送されます。
https:// <ホスト名:ポート> ////////appcontext/a/
Apache docs では、正規表現に何かが欠けているか、mod_wl プラグインに問題がない限り、/appcontext/a/ にのみディレクティブを適用する必要があることを明確に述べています。
http://httpd.apache.org/docs/2.2/mod/core.html
「たとえば、<LocationMatch ^/abc> はリクエスト URL /abc と一致しますが、リクエスト URL //abc とは一致しません」
これを達成するための提案はありますか?
regex - LocationMatch 否定式
サイトのパスワード保護が必要です。Web サービスの URL のままですべてを許可します。
この式はApacheで完全に機能しますが、反対にする必要があります。
私は多くの多くのフォームを試していますが、うまくいきません。私はこれを試してみましたが、Apache(2.2)ではなく、レギュラーテスターで完全に動作します
その表現をどのように否定できますか?
問題がある場合は.htaccessコンテンツ。
regex - 特定のサブフォルダーを除くメイン URL を許可する LocationMatch
httpd.conf で、メイン パスは許可するが、特定のサブフォルダーは許可しないようにしたいと考えています。
このパターンの URL はすべて受け入れられる必要があります。
/app-1.0/public
/app-1.0/画像
/app-1.0/
ただし、これは無視する必要があります/許可されません。
/app-1.0/private
この構成を Apache バージョン 2.2.3 で使用したいと考えています。そのバージョンは負の正規表現をサポートしていないことを読みましたが、よくわかりません。
よろしくお願いします。
regex - LocationMatch 正規表現の動作
LocationMatch を使用して Apache で一連の URL ベースのルールを設定しようとしていますが、正規表現が理解できない動作をしているようです。
ドキュメントを調べてみましたが、私の問題に対する WRT はあまり明確ではありません...また、インターウェブに関する他の質問/回答もそうではありません。
以下は、私の Location ディレクティブと、LocationMatch ディレクティブの構造の一般的な例です。
- これらのディレクティブはすべて、ssl を使用した仮想ホスト内にあります。
- 構成内の他の場所で、他の Location または LocationMatch ディレクティブを使用していません。
- LocationMatch ディレクティブはすべて、私の CatchAll Location ディレクティブの後に来ます。
<Location />ディレクティブのみを使用すると、すべてが正常に機能します。
ここで使用されている正規表現と、私が経験した正規表現との間にいくつかの違いがあることに気付きました..
- 開始/終了スラッシュを使用しても機能しないようです。
- /i /g などの終了修飾子タグを使用しても機能しません。
- 以下に示すその他の動作の違い
私は多くの異なることを試しましたが、ここに私の結果のいくつかの例があります:
1.
- 上記は、すべての .pdf および .PDF 拡張子の URL に一致するようです。
でも:
- .pdf 拡張子の URL には一致しません。
- .pdf は CatchAll によってキャッチされません (404 not found と表示されます)。
- .PDF (大文字) は CatchAll によってキャッチされます。
.
2. 似ていない:
- 上記は私の .docx URL と一致します。
でも:
- 上記は .docx URL と一致しません。
- CatchAll (404 not found) によってキャッチされません。
- 順序を並べ替えてみましたが、それでも同じ結果が得られます。
何が起こっているのかわかりませんが、動作は完全に私が期待するものではありません.
私が間違っている可能性があることや、私が理解していないことについて何か考えがありますか?
この質問をより良くするための提案をお待ちしています。ありがとう。