首页 > 解决方案 > htaccess 文件在 apache 2.2 中有效,但在 apache 2.4 中无效 - aws beanstalk 托管

问题描述

我需要让这个.htaccess文件在 Apache 2.4 中工作。似乎 Apache 2.4 不喜欢

Order Allow,Deny
Deny from all

我把它改成了

  <FilesMatch "\.(htaccess|htpasswd|ini|psd|log|sh|crt|gitignore|md)$">
          Require all denied
    </FilesMatch>

以下是我迄今为止看到的一些错误:

AH10244: invalid URI path (/cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh)
AH01797: client denied by server configuration: /var/www/html/

这是.htaccess我试图在 Apache 2.4 中使用的文件。你能发现其他 Apache 2.4 不喜欢的东西吗?

    Options -Indexes
    
    <FilesMatch "\.(htaccess|htpasswd|ini|psd|log|sh|crt|gitignore|md)$">
        Order Allow,Deny
        Deny from all
    </FilesMatch>
    <Files 8fjfsuUhhhhh8/*>
        deny from all
    </Files>
    <Files backups/*>
        deny from all
    </Files>
    <Files stats/*>
        deny from all
    </Files>
    <Files icons/*>
        deny from all
    </Files>
    <Files error/*>
        deny from all
    </Files>
    <Files logs/*>
        deny from all
    </Files>
    <Files git/*>
        deny from all
    </Files>
    <Files .git/*>
        deny from all
    </Files>
    <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteBase /
        RewriteRule ^blog/(.*)$ https://blog.mysite.com/$1 [R=301,NC,L]
    
        # Old Site Redirects
        RewriteRule ^retailers($|/$) /merchants/ [R=301,NC,L]
        RewriteRule ^faqs($|/) /FAQ/ [R=301,NC,L]
        RewriteRule ^contact($|/) /contact-us/ [R=301,NC,L]
        RewriteRule ^login($|/) /customer-login/ [R=301,NC,L]
        RewriteRule ^bank-vision($|/) /FAQ/ [R=301,NC,L]
    
        # New Website Proxying
        # Handle Request to index
        RewriteCond %{THE_REQUEST} ^GET\ /\ .*
        RewriteRule . http://mysite.com.s3-website.eu-west-2.amazonaws.com/ [P]
    
        # Handle all the named pages
        RewriteRule ^(merchants|how-it-works|shop-directory|contact-us|terms-of-use|privacy-policy|complaints-policy|careers|FAQ|error)($|/) http://mysite.com.s3-website.eu-west-2.amazonaws.com/$1$2 [P]
    
        # Handle the various static elements
        RewriteRule ^static/(.*)$ http://mysite.com.s3-website.eu-west-2.amazonaws.com/static/$1 [P]
        RewriteRule ^page-data/(.*)$ http://mysite.com.s3-website.eu-west-2.amazonaws.com/page-data/$1 [P]
        RewriteRule ^([^\/]*).js$ http://mysite.com.s3-website.eu-west-2.amazonaws.com/$1.js [P]
        RewriteRule ^icons-(.*)/(.*)\.(png|jpg)$ http://mysite.com.s3-website.eu-west-2.amazonaws.com/icons-$1/$2.$3 [P]
    
        # Handle request to homepage with get parameters
        RewriteCond %{THE_REQUEST} ^GET\ /\?utm_source=([^\s&]+)
        RewriteRule . http://mysite.com.s3-website.eu-west-2.amazonaws.com/ [P]
        RewriteCond %{THE_REQUEST} ^GET\ /\?ref=([^\s&]+)
        RewriteRule . http://mysite.com.s3-website.eu-west-2.amazonaws.com/ [P]
    
        # Legacy Platform stuff
        RewriteRule ^(frontend/process/process/components|admin-lf7/ui/ajax|frontend/ajax|8fjfsuUFks988/cron)($|/) - [L]
        RewriteRule ^rt8aglCo7XfQOxxQH2mTDZw45675675675567P27da4t1T1yJIB5Be58ih /admin.php [L]
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule . /index.php [L]
        RewriteCond %{THE_REQUEST} ^[A-Z]+\ /[^?\ ]*\.php[/?\ ]
        RewriteRule .*\.php$ index.php [L]
    </IfModule>

当我使用.htaccessAWS beanstalk 示例中的此文件时,我可以看到该站点正常:

<IfModule mod_rewrite.c>
    Options -MultiViews

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

标签: phpapache.htaccessamazon-elastic-beanstalk

解决方案


Order Allow,Deny Deny from all向后兼容 Apache 2.4,因此您应该可以使用旧配置。

该错误AH10244: invalid URI path (/cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh) 实际上是试图利用您的服务器,而您的 apache 正确地否认了这一点。

您是否正确测试了 FilesMatch ?喜欢尝试访问:yourpage.com/.htaccess?结果,您应该在日志中看到您的第二个“错误” AH01797: client denied by server configuration: /var/www/html/,这意味着您的 .htaccess 和 FilesMatch 可以正常工作


推荐阅读