用Apache列出目录内容

时间:2019-04-15 12:34:47

标签: apache vue.js vue-router

首先让我说我对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,但所有尝试返回的错误均会返回怪异的错误。

预先感谢

3 个答案:

答案 0 :(得分:0)

基于RewriteBase是什么,您可以具有多个重写规则。在您当前的集合中,该规则将应用于主机的根。

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

答案 1 :(得分:0)

我建议阅读文档: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]

”。是通配符,因此所有网址都将重定向到index.html。 [L]标志停止执行(https://httpd.apache.org/docs/2.4/rewrite/flags.html#flag_l

如果URL为index.html,则RewriteRule ^index\.html$ - [L]将停止执行。

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

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

答案 2 :(得分:0)

最后,在浏览了文档之后,我无法理解如何设置它。我找到了this page,使用选项#2,我可以使该目录至少显示出来。

然后我通过.htaccess文件将auth添加到文件夹,并使用用户名/密码组合添加了.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

欢迎任何更正!