我有一个 .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/where不会被推送到@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