防止 Apache2 在静态目录中执行 CGI

防止 Apache2 在静态目录中执行 CGI

我正在运行一个在 Ubuntu 20.04 LTS 上运行的 Apache 2 Web 服务器。我为目录启用了一个 Python CGI 处理程序/var/www/html,即DocumentRoot。我想知道如何排除某个目录以运行 Python 文件的 CGI。
这是我的 CGI 配置:

<Directory "/var/www/html">
    Options +ExecCGI
    AddHandler cgi-script .py
        <IfModule mod_rewrite.c>
                RewriteEngine On
                RewriteCond %{REQUEST_FILENAME} !-d
                RewriteCond %{REQUEST_FILENAME}\.py -f
                RewriteRule ^(.*)$ $1.py
        </IfModule>
</Directory>

<Directory "/var/www/html/static/cdn">
        DirectoryIndex disabled
        Options +Indexes -ExecCGI
        AllowOverride None
        Require all granted
</Directory>

/static/cdn目录中,我希望.py文件像其他静态文件一样被提供,而不是作为 CGI 执行。以下是目录树cdn

.
├── checkForUpdates.exe
├── checkForUpdates.py
└── findLogErrors
    ├── botCriteria.json
    ├── cleanup.json
    ├── findLogErrors.exe
    └── version.json

1 directory, 6 files

我能够在网络浏览器中查看目录的索引,如您所愿。我能够查看或下载此目录中的任何文件,但不包括checkForUpdates.py。服务器并未尝试将其作为 CGI 执行,而是给出 403。上的权限checkForUpdates.py与其他文件相同:

nbroyles@webserver:/var/www/html/static/cdn$ ls -altr
total 15548
-rwxrwxr-x 1 www-data web 15901526 Nov 17 11:37 checkForUpdates.exe
drwxrwxr-x 7 www-data web     4096 Nov 19 11:13 ..
drwxrwxr-x 2 www-data web     4096 Dec 23 09:41 findLogErrors
drwxrwxr-x 3 www-data web     4096 Dec 23 09:49 .
-rwxrwxr-x 1 www-data web     2072 Dec 23 09:49 checkForUpdates.py

我怎样才能像查看.py其他文件一样查看该文件.json.exe我确信我的配置中缺少了一些简单的东西。任何帮助都将不胜感激!

答案1

您需要SetHandler default-handler添加<Directory "/var/www/html/static/cdn">

相关内容