如何仅允许访问特定 URL 并使用 Apache .htaccess 重写它们?

问题描述 投票:0回答:1

我正在使用 Apache,并希望使用 .htaccess 来实现以下目标:

  • 将 /api/get 重写为 get.php
  • 将 /api/report 重写为report.php
  • 仅允许访问这些 URL/脚本

本质上,我只想允许这两个特定端点(/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]
.htaccess mod-rewrite configuration config apache2.4
1个回答
0
投票

你可以这样做:

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
标志只是阻止重写引擎在当前通道期间处理其他规则。)

© www.soinside.com 2019 - 2024. All rights reserved.