基本的にすべてのアクセスを 1 つのページに向ける .htaccess ルールがあり、その時点から PHP で処理します。したがって、それがどのディレクトリにあるかに関係なく、すべての URL がこのスクリプトに渡されます。
私のルートが /project/ ( example.com/project/some/page/where ) だった場合、 /some/page/where は @frontend.php にリダイレクトされます。
RewriteRule !\.(js|ico|gif|jpg|png|css|pdf|swf|doc)$ @frontend.php
ただし、ページのサブセットを別のハンドラーにプッシュできるようにしたいところまで来ました ( example.com/project/api/page/where ではなく、 example.com/project/some/ のように) API/場所):
RewriteRule ^/api?$ @api.php
問題は、このルールが他のルールより上か下かに関係なく、これが機能しないことです。誰も私がこれを行うことができる方法を提案できますか?
私も試しました:
RewriteRule ^/api(/.*)? @api.php [L]
RewriteCond %{REQUEST_URI} !/api
RewriteRule !\.(js|ico|gif|jpg|png|css|pdf|swf|doc)$ @frontend.php [L]
これはhttp://example.com/project/api/page/で機能しますが、 @frontend.php にプッシュされず、@api.php にプッシュされず、次のようになります。
[Wed Apr 18 10:46:12 2012] [error] [client 127.0.0.1] File does not exist: /www/project/api
編集:
私の最近の試みは:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^api(/.*)? @api.php [L]
RewriteCond %{REQUEST_URI} ^api
RewriteRule !\.(js|ico|gif|jpg|png|css|pdf|swf|doc)$ @frontend.php
これの問題は、URL が api/ 以外で始まる場合 ( example.com/project/test/page/where )、エラーがスローされることです。
[Sat Apr 21 10:50:13 2012] [error] [client 127.0.0.1] File does not exist: C:/xampp/www/projects/frame3/test