首先让我说我对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
,但所有尝试返回的错误均会返回怪异的错误。
预先感谢
答案 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
httpdocs/documents
.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
.htpasswd
文件。为了生成用户名/密码组合,我使用了this 欢迎任何更正!