如何在 DSM6 上启用 apache 目录列表?

如何在 DSM6 上启用 apache 目录列表?

我想要自动生成索引,与下面的示例非常相似。对于我在互联网上的网站,我的网络主机正确配置了 Apache,现在我需要在 Synology NAS 上为我们的内联网执行此操作。

根据这个答案我将其放入Options +Indexes一个.htaccess文件中,但它还没有起作用。网络搜索让我将其添加AllowOverride All到 Apache 配置中,我尝试在/usr/local/etc/apache24/conf/httpd24.conf找到的文件中执行此操作(请参阅下面编辑中的配置文件)。但是,该条目已存在于第 76 行:

<Directory />
    Options FollowSymLinks
    AllowOverride All
</Directory>

出于测试目的,相应的目录包含旧的(重命名的)_index.html文件和foo.html,可以使用例如以下方式访问192.168.1.2/index.html

$ ls /volume1/web/
@eaDir  foo.html  _index.html

应该foo.html像下图这样列出。

目前我分别得到 404http://192.168.1.2/index.html和 500。显示我的网站。http://192.168.1.2/http://192.168.1.2/foo.html

所以,看来我陷入困境,不知道该如何继续。有什么想法吗?

例子:

在此处输入图片描述

笔记:我正在DSM 6.2.4-25556使用linux4.4.59+ x86_64内核运行并且Apache 2.4运行。


编辑

以下是原始的 Apache 配置文件(未改变):

$ cat httpd24.conf 

ServerRoot "/usr/local/etc/apache24"

Listen 127.0.0.1:915

LoadModule authn_core_module modules/mod_authn_core.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authz_core_module modules/mod_authz_core.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule authz_owner_module modules/mod_authz_owner.so
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule include_module modules/mod_include.so
LoadModule filter_module modules/mod_filter.so
LoadModule deflate_module modules/mod_deflate.so
LoadModule log_config_module modules/mod_log_config.so
#LoadModule logio_module modules/mod_logio.so
LoadModule env_module modules/mod_env.so
LoadModule mime_magic_module modules/mod_mime_magic.so
LoadModule headers_module modules/mod_headers.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule mime_module modules/mod_mime.so
LoadModule status_module modules/mod_status.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule asis_module modules/mod_asis.so
LoadModule cgid_module modules/mod_cgid.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule dir_module modules/mod_dir.so
LoadModule actions_module modules/mod_actions.so
LoadModule alias_module modules/mod_alias.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
LoadModule unixd_module modules/mod_unixd.so

<IfModule unixd_module>
    User http
    Group http
</IfModule>

ErrorLog /run/apache24-error_log
TraceEnable off
LogLevel error

<IfModule log_config_module>
    LogFormat "%{X-Real-IP}i  %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%{X-Real-IP}i  %l %u %t \"%r\" %>s %b" common

    <IfModule logio_module>
        LogFormat "%{X-Real-IP}i  %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
    </IfModule>

    CustomLog /dev/null combined
    #CustomLog /run/apache24-access_log combined
</IfModule>

<IfModule cgid_module>
    ScriptSock /run/httpd/user-cgisock
</IfModule>

<IfModule mime_module>
    TypesConfig conf/mime.types
    AddEncoding x-compress Z
    AddEncoding x-gzip gz tgz
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
    AddType image/x-icon .ico
    AddHandler cgi-script .cgi
</IfModule>

MIMEMagicFile conf/magic
EnableMMAP off

# TODO: AllowOverride of root directory to All ??
<Directory />
    Options FollowSymLinks
    AllowOverride All
</Directory>

# TODO: should apache handle this or nginx?
<IfModule deflate_module>
    DeflateCompressionLevel 2
    AddOutputFilterByType DEFLATE text/html text/plain text/xml
    AddOutputFilter DEFLATE js css
    BrowserMatch ^Mozilla/4 gzip-only-text/html
    BrowserMatch ^Mozilla/4\.[0678] no-gzip
    BrowserMatch \bMSIE\s7  !no-gzip !gzip-only-text/html
</IfModule>

# TODO: should apache handle this or nginx
<Files ~ "^\.([Hh][Tt]|[Dd][Ss]_[Ss])">
    <IfModule authz_core_module>
        Require all denied
    </IfModule>
</Files>

<VirtualHost _default_:80 _default_:443>
    DocumentRoot "/var/services/web"
    Alias /_webstation_/ "/var/packages/WebStation/target/error_page/"
</VirtualHost>

# TODO: Should apapche handle FileETag
# For CVE-2003-1418
FileETag MTime Size

Include conf/extra/httpd-mpm.conf
Include conf/extra/httpd-autoindex.conf
Include conf/extra/httpd-languages.conf
Include conf/extra/mod_xsendfile.conf
Include conf/extra/mod_rpaf.conf

IncludeOptional sites-enabled/*.conf

内容sites-enabled

$ ls /usr/local/etc/apache24/sites-enabled
httpd-vhost.conf  webstation-default.conf

$ cat /usr/local/etc/apache24/sites-enabled/httpd-vhost.conf 
Alias /_webstation_/ "/var/packages/WebStation/target/error_page/"
ErrorDocument 400 /_webstation_/400.html
ErrorDocument 401 /_webstation_/401.html
ErrorDocument 402 /_webstation_/402.html
ErrorDocument 403 /_webstation_/403.html
ErrorDocument 404 /_webstation_/404.html
ErrorDocument 405 /_webstation_/405.html
ErrorDocument 406 /_webstation_/406.html
ErrorDocument 407 /_webstation_/407.html
ErrorDocument 408 /_webstation_/408.html
ErrorDocument 500 /_webstation_/500.html
ErrorDocument 501 /_webstation_/501.html
ErrorDocument 502 /_webstation_/502.html
ErrorDocument 503 /_webstation_/503.html
ErrorDocument 504 /_webstation_/504.html
ErrorDocument 505 /_webstation_/505.html

$ cat /usr/local/etc/apache24/sites-enabled/webstation-default.conf 
<Directory "/var/services/web">
    <FilesMatch "\.(php[345]?|phtml)$">

        Redirect 500
    </FilesMatch>
    Options MultiViews FollowSymLinks ExecCGI
    AllowOverride All
    <IfModule authz_core_module>
        Require all granted
    </IfModule>
    <IfModule dir_module>
        DirectoryIndex index.html index.htm index.cgi index.php index.php5
    </IfModule>
</Directory>

答案1

有任何想法吗?

一段<Directory>通常需要目录.因此您可能想尝试例如:

<Directory "/path/to/your/httpd/htdocs">
    Options FollowSymLinks
    AllowOverride All
</Directory>

补充评论

如果我重复了您已经知道的内容,请原谅我。=)

  • <Directory>部分通常应用于相应的<VirtualHost>。因此,例如,要将一个部分应用于默认 的根目录<VirtualHost>,您可以使用:

    <VirtualHost _default_:80 _default_:443>
    
          DocumentRoot "/var/services/web"
          Alias /_webstation_/ "/var/packages/WebStation/target/error_page/"
    
          <Directory "/var/services/web">
              Options FollowSymLinks
              AllowOverride All
          </Directory>
    
    </VirtualHost>
    
  • 您可能不应该按照上面的建议操作。相反,验证是否sites-enabled包含(最有可能)指向 eg 的符号链接sites-available以及其下的某些文件。然后尝试更新 ex 下相关的任何虚拟主机sites-available

  • 假设/volume1/web/实际上是您想要索引的文件所在的位置,则可能不应该有尾随斜杠(例如,您可能想要使用/volume1/web)。

  • 我不确定 DSM 是基于什么的,但对于过去需要添加虚拟主机文件sites-enabled/sites-available等功能的发行版来说,这很常见。话虽如此,我怀疑这不适用于仅更新现有文件。sudo a2ensite some.conf.conf

  • 任何更新之后,您都需要重新启动 Apache(例如类似的sudo systemctl restart apache2)。

相关内容