首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DirectoryIndex在AliasMatch上找不到

DirectoryIndex在AliasMatch上找不到
EN

Stack Overflow用户
提问于 2015-08-13 18:05:14
回答 1查看 802关注 0票数 3

文档中,我有以下内容:

AliasMatch "^/projects/(.+)" "/var/www/domain.name/$1/public"

它应该只匹配像../projects/project1这样的URL,而不是只匹配../projects/本身。

当我说,http://example.org/projects/project1/返回一个403 Forbidden.The日志,因为:

No matching DirectoryIndex found, and server-generated directory index forbidden by Options directive

我尝试在vhost中显式地添加一个DirectoryIndex,但是没有结果。我打开了目录(/var/www/domain.name/project1/public),以便每个人都能读到,现在它只显示了我想要的文件夹的目录列表。我可以看到它会转到正确的文件夹,并且可以看到index.html文件,但是它并不会自动得到它应该得到的结果。

我的VirtualHost文件的摘要版本:

代码语言:javascript
复制
<VirtualHost *:443>
    DocumentRoot /var/www/domain.name/www/public
    ServerName www.domain.name

    AliasMatch "^/projects/(.+)" "/var/www/domain.name/$1/public"

    ErrorDocument 401 err.php
    ErrorDocument 404 err.php
    ErrorDocument 500 err.php

    <Directory /var/www/domain.name>
        Options Indexes FollowSymLinks
        AllowOverride All
    </Directory>
</VirtualHost>

如果然后将特定项目文件夹的权限设置为755,则只会得到一个目录列表。我把它改回711了。

/var/www/中的所有文件夹都属于用户名:www-data,并具有711权限。

如果我对文件夹做了一个直接的别名,即Alias /projects/<actual-project-name> /var/www/domain.name/<project-name>/public,它可以工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-15 18:03:00

AliasMatch "^/projects/(.+)" "/var/www/domain.name/$1/public"

这方面的问题是,所有请求都映射到一个URL -一个目录。AliasMatch不将跟踪路径复制到目标的末尾,这与Alias不同。

当您请求/projects/project1时,别名自然会将您映射到/projects/public。mod_dir (DirectorySlash)附加一个尾随斜杠(因为这是一个有效的目录),但是目录索引丢失了。目标文件实际上只是/projects/public/ (一个目录),正如AliasMatch指令中所述,而不是所需的/projects/public/index.html

使此工作符合预期(能够访问“公共”目录中的所有文件,例如。index.php)然后需要第二个括号子模式,类似于:

代码语言:javascript
复制
AliasMatch ^/projects/([^/]+)(.*) /var/www/domain.name/$1/public/$2
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31995429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档