如何配置apache以允许使用FileMatch过滤器进行其余api调用

时间:2019-07-02 19:37:05

标签: apache

在将白名单文件扩展名模式与apache配置一起使用时,我无法使apache提供rest api调用。我将apache配置为拒绝所有文件扩展名。这样可以防止默认扩展名未知的文件。到目前为止,它的工作完全符合预期。 Apache提供php,html,json等...,并且apache拒绝unknow扩展名(.sh,.sql)。

例如: 这些有效:(返回200,并有响应)

那些不起作用:(返回403(客户端被服务器配置拒绝))

到目前为止,太好了。但是当我点击https://vhosttest.test.com/company_api/1.0.0/object/时,它还会返回403(服务器配置拒绝了客户端) 我找不到原因,因为重写规则应该重定向到允许的php文件。

有我的配置:

1- /etc/httpd/conf/httpd.conf

<Directory "/var/www/html">
    Options None 
    AllowOverride None
    Order deny,allow
    Deny from all
</Directory>

2-对于/ var / www / html / VHOSTNAME下/etc/httpd/conf/httpd.conf中的每个虚拟主机,配置为:

<VirtualHost *:443>
        ServerAdmin webmaster@dummy-host.example.com
        ServerName vhosttest.test.com
        ServerAlias www.vhosttest.test.com
        SSLEngine On
        SSLCertificateFile /path/ssl_certificate.crt
        SSLCertificateKeyFile /path/privateKey.key
        SSLCertificateChainFile /path/IntermediateCA.crt
        DocumentRoot /var/www/html/vhosttest

        # -------------------------------------------------------------
        RedirectMatch ^/$ index.php

        <Directory /var/www/html/vhosttest/>
            Options None
            AllowOverride All
            Order allow,deny
            deny from all

            <FilesMatch "\.(png|jpg|gif|css|php|html|js|json)$">
                Order deny,allow
                Allow from all
            </FilesMatch>
        </Directory>
        # -------------------------------------------------------------

        ServerSignature Off
        ErrorLog /logpath/vhosttest/error_log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
        LogLevel warn

        CustomLog /logpath/vhosttest/error_log combined
</VirtualHost>

3-最后,对于每个虚拟主机,我们还有一个.htaccess文件,用于使用以下配置的REST API:

<IfModule mod_headers.c>
        Header set Cache-Control "no-cache, no-store"
        Header set Pragma "no-cache"
        Header set Expires 0
</IfModule>

<IfModule mod_rewrite.c>
    Options +FollowSymLinks
    RewriteEngine On
    RewriteRule ^/?([company-]*)company_api/ company_rest_api.php [L,QSA]
    RewriteRule ^/?([company-]*)company-api/ company_rest_api.php [L,QSA]
    RewriteRule ^/?([company-]*)company2-api/ company2_rest_api.php [L,QSA]
    RewriteRule ^/?([company-]*)company3-api/ company3_rest_api.php [L,QSA]
</IfModule>

我希望apache能够对服务器https://vhosttest.test.com/company_api/1.0.0/object/进行调用,而不会出现403错误。

0 个答案:

没有答案