【问题标题】:List directory contents with Apache使用 Apache 列出目录内容
【发布时间】:2019-09-05 10:40:21
【问题描述】:

首先我要说我对 Apache 的了解几乎一无所知,所以如果我没有使用正确的术语,我深表歉意。

我有一个用 Vue 编写的网站,路由由 Vue Router 负责。在他们的文档中,他们指定为了让路由器正常工作,您必须将其放入您网站的 .htaccess 文件中:

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteRule ^index\.html$ - [L]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule . /index.html [L]
</IfModule>

据我所知,所有请求都发送回index.html 文件,该文件将负责根据路径加载正确的组件。

我的目标是现在让我的网站有一个路径(比如说/documents),它不会被 Vue 拾取,而是显示目录的内容,并允许您导航和下载内容(比如this)。

我尝试了几种方法,但它们都返回 403 或 500(可能是由于我的配置错误)。我知道我需要添加一个RewriteRule,但我尝试过的所有这些都返回奇怪的错误。

提前致谢

【问题讨论】:

    标签: apache vue.js vue-router


    【解决方案1】:

    您可以根据RewriteBase 的内容制定多个重写规则。在您当前的集合中,该规则适用于主机的根目录。

    您可以使用RewriteBase /documents/ 添加另一个规则。更多信息:What does RewriteBase do and how to use it?

    【讨论】:

      【解决方案2】:

      我建议阅读文档:https://httpd.apache.org/docs/2.4/mod/mod_rewrite.html

      RewriteCond 指令定义了一个规则条件。

      所以这里是一个肮脏的解释:

      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      

      因此,您的 RewriteConds 表示,如果给定的路径/url 不是文件 (!-f) 而不是目录 (!-d),则下一个重写规则 (RewriteRule . /index.html [L]) 采用行动。

      RewriteRule . /index.html [L]
      

      “。”是一个通配符,所以所有的 url 都会被重定向到 index.html。 [L] 标志停止执行 (https://httpd.apache.org/docs/2.4/rewrite/flags.html#flag_l)

      如果 url 是 index.html,RewriteRule ^index\.html$ - [L] 会停止执行。

      因此,您的重写规则满足您的要求并且看起来是正确的。

      当您收到 403 时,您可能需要将 Options +Indexes 添加到您的配置或 htaccess 中。

      【讨论】:

        【解决方案3】:

        最后,在查看文档后,我无法理解如何设置它。我找到了this page,并且使用选项#2 我能够让目录至少显示出来。

        然后我通过.htaccess 文件将身份验证添加到文件夹中,并使用用户名/密码组合添加了.htpasswd 文件

        TLDR

        1. 在您想要的位置创建文件夹。就我而言,它位于httpdocs/documents
        2. 创建一个.htaccess 文件,在其中放置以下内容:
        # Omit this section if you do not need the auth
        AuthType Basic
        AuthName "restricted area"
        AuthUserFile /path/to/your/.htpasswd
        require valid-user
        
        Order allow,deny
        Allow from all
        Options +Indexes
        
        1. 在上面指定的位置创建.htpasswd 文件。为了生成用户名/密码组合,我使用了this

        欢迎大家指正!

        【讨论】:

          猜你喜欢
          • 2011-01-19
          • 2011-07-14
          • 1970-01-01
          • 2010-11-03
          • 2015-03-10
          • 1970-01-01
          • 2019-01-11
          • 2011-06-10
          • 1970-01-01
          相关资源
          最近更新 更多