我正在尝试将与某个模式匹配的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
任何人都有任何想法?我认为这必须是我忽略的简单。
答案 0 :(得分:0)
在意识到我没有看到别名记录后,我想出了这个。
首先我添加了这个LogLevel:
LogLevel debug alias:trace6
这让我看到当它试图替换正则表达式匹配(我没有使用)时,在我的目标目录中删除了反斜杠。由于我在Windows上,我将路径更改为以下内容:
D:/Path/to/webserver/private/index.php
现在它按预期映射路径。