为什么在 apache2 服务器配置中使用别名而不是重定向指令时出现错误 403?

Why error 403 when using alias and not redirect directives in apache2 server config?

一般来说,我是 apache 和网络服务器的新手,但我在使用别名 URLs 从网络访问 phps 时遇到问题。这就是我的配置:

ServerAdmin something@gmail.com
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com

AliasMatch "^/index$" "/"
AliasMatch "^/about$" "/about.php"
AliasMatch "^/editor$" "/editor.php"

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

我要显示的 php 文件位于 DocumentRoot 文件夹中,我已确保 root 及其所有子目录和文件的权限为 755。令我困惑的是,我使用的不是 Alias重定向它工作正常,除了浏览器 URL 字段显示 .php 这是不可取的。那么为什么权限不是通过别名而是通过重定向授予的呢?下面是尝试访问上面写的站点配置文件的日志条目:

127.0.0.1 - - [27/Jan/2017:04:11:55 +0100] "GET /about HTTP/1.1" 403 422 "http://example.com/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"

感谢任何帮助,干杯

您应该使用目标的完整路径:

AliasMatch "^/index$" "/var/www/example.com/"
AliasMatch "^/about$" "/var/www/example.com/about.php"
AliasMatch "^/editor$" "/var/www/example.com/editor.php"

在这种情况下,更简单的别名也有效:

Alias "/index" "/var/www/example.com/"

等等

参考资料