我在www.mysite.com上的apache2上提供了一个REST API。
其余的api可在www.mysite.com/rest /...
访问但是盒子上没有名为/ rest的文件夹,它都是通过重写规则发生的。
如何使用.htaccess文件实现以下目的:
1)允许访问来自www.mysite.com/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>
包含“/opt/bitnami/apps/myapp/conf/htaccess.conf”
答案 0 :(得分:1)
尝试并替换此
<IfVersion < 2.3 >
Order allow,deny
Allow from All
</IfVersion>
<IfVersion >= 2.3>
Require all granted
</IfVersion>
通过以下内容了解它的工作原理。
Order deny,allow
Deny from all
Allow from 123.456.67.89
将123.456.67.89
IP地址替换为您的IP地址
然后在/ rest文件夹的另一个目录下添加另一个目录指令。
<Directory /opt/bitnami/apps/myapp/htdocs/web/rest>
Order Allow,Deny
Allow from All
</Directory>
如何运作。同样,您也可以在root和/ rest中的htaccess中执行此操作。