.htaccess 仅允许访问特定的mod_重写生成的URL,拒绝所有其他http请求
我在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的内容如下:.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地址,拒绝
<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>