.htaccessファイルの2番目のルールが最初のルールをオーバーライドするmod_rewriteの問題が発生しています。問題の.htaccessファイルは次のようになります。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /path/appname
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule /api/v1/(.*)$ api/v1/index.php?rquest=$1 [QSA,NC,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
</IfModule>
私が見ている問題はこれです:
http://example.com/path/appname/api/v1/valid/endpointに直接アクセスすると、最初のRewriteRuleが正しくトリガーされ、APIから結果が返されます。
ただし、http: //example.com/path/appname/appにアクセスするとします。これは、2番目のRewriteRuleに従って書き換えられたページです。このページは、api/v1ページに対してAJAXリクエストを行います。これらのリクエストは、代わりに2番目のRewriteRuleを介して送信され、ベースのindex.phpページに送信されます。
[L]フラグは、一致するとそれ以上のルールが実行されないため、「api / v1」を含むリクエストがそれをキャッチしてチェックを停止する必要があることを理解しているため、これがどのようになるかについて混乱しています。それ以上の試合のために。これを正しく機能させるには、何を変更する必要がありますか?
ありがとう!