我们有一个magento安装。由于开发目的,我们用.htacces保护关闭它。但我确实想打开API,所以我不必将一堆第三方服务列入白名单。
以下构造适用于存在的文件(api.php
),但不适用于重写的网址(api
,api/?wsdl
)。
此.htaccess
是public_html之上的一个目录。基于perishablepress
AuthType Basic
AuthName "Toegang nodig? neem gerust contact op: 038-8200270 !"
AuthUserFile /home/kijken/domains/.htpasswd
AuthGroupFile /dev/null
Require valid-user
# allow public access to the following resources
SetEnvIf Request_URI "^/api.php" allow
SetEnvIf Request_URI "^/api/" allow #api is not a real folder
SetEnvIf Request_URI "^/api/?wsdl" allow
Order allow,deny
Allow from env=allow
Allow from 217.121.158.248 #Company HQ
Satisfy any
带有.htaccess
的Magento位于文件的public_html,mirror
我需要更改什么才能使其与非现有文件一起使用?
只要符合以下3个标准,我不介意不同的设置:
答案 0 :(得分:1)
查看您的设置并按照说明操作,最简单的方法是将限制代码放在 Magento htaccess 的顶部({{1} })。
我把它贴在了其余的magento .htacces里面 的public_html。我的问题没有任何改变。问题依然存在 相同。
那是因为Magento的htaccess抹去了你的限制。您需要删除这两行:
另一个细节
/public_html/.htaccess
因为:{/ p>而无用
SetEnvIf Request_URI "^/api/?wsdl" allow
此处)未包含在wsdl
中
(不符合你的期望)Request_URI
)更大,包含您无用的规则 <强>结论强>
这是你的最终代码应该是什么样子
SetEnvIf Request_URI "^/api/" allow
经过测试和工作
答案 1 :(得分:0)
要根据CGI参数设置环境变量,您需要求助于mod_rewrite,例如。
RewriteEngine On
# Set environment variable "allow" to Allow requests for /api/?wsdl
RewriteCond %{QUERY_STRING} wsdl
RewriteRule ^/?api - [E=allow:1]
# Set environment variable "allow" to Allow requests for URL's that are not Files (-f) and not Directories (-d)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ - [E=allow:1]
如果您可以访问httpd.conf,请将规则粘贴在服务器配置中,因为它们只需在服务器启动时解析/编译一次,而不是每次请求。