.htaccess 仅允许访问特定的mod_重写生成的URL,拒绝所有其他http请求

.htaccess 仅允许访问特定的mod_重写生成的URL,拒绝所有其他http请求,.htaccess,mod-rewrite,apache2,.htaccess,Mod Rewrite,Apache2,我在www.mysite.com上有一个REST API由apache2提供 RESTAPI可访问www.mysite.com/rest/ 但是,该框上没有名为/rest的文件夹,所有这些都是根据重写规则进行的 如何使用.htaccess文件实现以下目标: 1) 允许访问来自www.mysite.com/rest/…的所有请求。。。(即任何请求,只要它是虚拟文件夹/rest的子文件夹) 2) 仅允许来自特定IP地址的任何其他请求,例如虚拟IP 123.45.67.89;对于所有其他IP地址,拒绝

我在www.mysite.com上有一个REST API由apache2提供

RESTAPI可访问www.mysite.com/rest/

但是,该框上没有名为/rest的文件夹,所有这些都是根据重写规则进行的

如何使用.htaccess文件实现以下目标:

1) 允许访问来自www.mysite.com/rest/…的所有请求。。。(即任何请求,只要它是虚拟文件夹/rest的子文件夹)

2) 仅允许来自特定IP地址的任何其他请求,例如虚拟IP 123.45.67.89;对于所有其他IP地址,拒绝

原因是我不想让任何人登陆www.mysite.com的管理页面

多谢各位

httpd.conf的内容如下:

<Directory "/opt/bitnami/apps/myapp/htdocs/web">
Options -Indexes +FollowSymLinks -MultiViews
AllowOverride None

<IfVersion < 2.3 >
 Order allow,deny
 Allow from All
</IfVersion>
<IfVersion >= 2.3>
 Require all granted
</IfVersion>
                   <IfModule pagespeed_module>
                   ModPagespeedDisallow "*"
                   </IfModule>
RewriteEngine on
RewriteBase /

#   Force login to be SSL
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^(.+)\.cloud\.myapp\.com$ [NC]
RewriteRule ^/?web/login/?(.*) https://%{SERVER_NAME}/web/login/$1 [R,L]

# if ack directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# otherwise forward it to index.php
RewriteRule ^.*$ /index.php [L]
### END: .htaccess inline ###

<LimitExcept GET HEAD PUT DELETE PATCH POST>
    Allow from all
</LimitExcept>

<IfDefine USE_PHP_FPM>
   RewriteEngine On
   RewriteOptions Inherit

   RewriteRule ^(.*\.php(/.*)?)$ fcgi://uds=%2fopt%2fbitnami%2fphp%2fvar%2frun%2fmyapp.sock/%{REQUEST_FILENAME} [P,L]
</IfDefine>

选项-索引+后续符号链接-多视图
不允许超限
命令允许,拒绝
通融
= 2.3>
要求所有授权
ModPagespeedDisallow“*”
重新启动发动机
重写基/
#强制登录为SSL
重写cond%{HTTPS}=在…上
重写cond%{HTTP\u HOST}^(+)\.cloud\.myapp\.com$[NC]
重写规则^/?web/login/?(*)https://%{SERVER_NAME}/web/login/$1[R,L]
#如果ack目录或文件存在,请直接使用它
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
#否则将其转发到index.php
重写规则^.*$/index.php[L]
###结束:.htaccess内联###
通融
重新启动发动机
重写选项继承
重写规则^(.\.php(/.*)$fcgi://uds=%2fopt%2fbitnami%2fphp%2fvar%2frun%2fmyapp.sock/%{REQUEST_FILENAME}[P,L]

包括“/opt/bitnami/apps/myapp/conf/htaccess.conf”

尝试并替换此

<IfVersion < 2.3 >
 Order allow,deny
 Allow from All
</IfVersion>
<IfVersion >= 2.3>
 Require all granted
</IfVersion>
用您的IP地址替换
123.456.67.89
IP地址

然后在/rest文件夹的另一个目录指令下添加另一个目录指令

<Directory /opt/bitnami/apps/myapp/htdocs/web/rest>
Order Allow,Deny
Allow from All
</Directory>

命令允许,拒绝
通融

这是怎么回事。同样,您也可以在根目录和/或rest中的htaccess中执行此操作

发布您当前的htaccess规则。我这样做是对原始帖子的编辑。@PanamaJack:我现在添加了一些指令,可以正确检测IP是否为123.45.67.89,但它错误地拒绝访问所有内容,包括/rest/…下的任何内容。。。我已重写cond%{REQUEST_FILENAME}!休息/…然后。。。。RewriteRule^(+)/tmp/$1[L]我需要什么小小的调整?这会给所有人一条403禁止的消息,包括指定的IP地址。这会发生在所有请求上,包括/rest。请记住,没有带有../rest的物理文件夹,那么directory指令在.conf中是否真的有效?如果这是原因,我如何将这些转换为htaccess重写指令。
<Directory /opt/bitnami/apps/myapp/htdocs/web/rest>
Order Allow,Deny
Allow from All
</Directory>