当Alias工作时,Apache 2.4 AliasMatch会一直返回404

时间:2015-09-19 01:38:21

标签: apache apache2.4 mod-alias

我正在尝试将与某个模式匹配的Apache 2.4虚拟主机(Wampserver 2.5)的调用重定向到我的DocumentRoot之外的目录。这是我的.conf文件中的相关代码:

<VirtualHost *:80>
    ServerName testserver.dev
    DocumentRoot "D:\Path\to\webserver\public\build"

    RewriteEngine On
    LogLevel alert rewrite:trace6

    # Statement below results in 404
    AliasMatch "^/sitemap.\d+.xml.gz$" "D:\Path\to\webserver\private\index.php"
</VirtualHost>

当我调用诸如http://testserver.dev/sitemap.1.xml.gz之类的apache时,我从服务器返回404。从我可以告诉匹配实际上工作,所以我假设目录路径以某种方式配置错误?如果我对其进行硬编码并仅使用普通Alias,则按预期工作:

# This works below
Alias /sitemap.1.xml.gz "D:\Path\to\webserver\private\index.php"

不确定我做错了什么。我已启用日志记录,这是错误日志中显示的内容:

init rewrite engine with requested uri /sitemap.1.xml.gz
pass through /sitemap.1.xml.gz

并且在访问日志中查找不起作用的请求

"GET /sitemap.1.xml.gz HTTP/1.1" 404 304

任何人都有任何想法?我认为这必须是我忽略的简单。

1 个答案:

答案 0 :(得分:0)

在意识到我没有看到别名记录后,我想出了这个。

首先我添加了这个LogLevel:

LogLevel debug alias:trace6

这让我看到当它试图替换正则表达式匹配(我没有使用)时,在我的目标目录中删除了反斜杠。由于我在Windows上,我将路径更改为以下内容:

D:/Path/to/webserver/private/index.php

现在它按预期映射路径。