我正在使用 Apache,并希望使用 .htaccess 来实现以下目标:
本质上,我只想允许这两个特定端点(/api/get 和 /api/report),并阻止访问其他任何内容。
我尝试过的:
RewriteEngine on
RewriteRule ^api/get$ /get.php [L]
RewriteRule ^api/report$ /report.php [L]
Order deny,allow
Deny from all
<Files "get.php">
Allow from all
</Files>
<Files "report.php">
Allow from all
</Files>
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/api/get$ [OR]
RewriteCond %{REQUEST_URI} !^/api/report$
RewriteRule ^ - [F]
RewriteRule ^api/get$ get.php [L]
RewriteRule ^api/report$ report.php [L]
RewriteEngine on
RewriteRule ^api/get$ /get.php [L]
RewriteRule ^api/report$ /report.php [L]
RewriteRule ^ - [F]
你可以这样做:
RewriteEngine on
# Rewrite requests to "/api/get" and "/api/report"
RewriteRule ^api/(get|report)$ $1.php [END]
# Block everything else, including direct requests to "/get.php" and "/report.php"
RewriteRule ^ - [F]
请注意第一条规则上使用
END
标志(而不是 L
)(需要 Apache 2.4+)。如果满足此规则,这可以防止(针对请求)处理任何进一步的规则。 (L
标志只是阻止重写引擎在当前通道期间处理其他规则。)