我正在尝试使用Apache2作为反向代理来设置一个简单的Python应用程序。 Python应用程序旨在提供其端点之一的目录列表。但是,我希望Apache能够处理该目录列表。 更详细地说,这是我想要的行为:
<a href="http://example.com/simple">
时,必须将其重写为<a href="http://example.com/pypi/simple">
。我设法得到1和2工作,但3工作不起作用。对http://example.com/pypi/packages的请求仍在转发到Python应用程序。这是我的Apache站点配置:
<VirtualHost *:80>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
ServerName example.com
Alias /pypi/packages /home/somebody/pypi-server/pypi-packages
<Directory /home/somebody/pypi-server/pypi-packages>
Options +Indexes
Require all granted
</Directory>
ProxyPass /pypi/ http://localhost:8080/
Redirect /pypi /pypi/
ProxyPassReverse /pypi/simple/ http://example.com/simple/
ProxyPreserveHost On
<Location "/pypi/">
SetOutputFilter proxy-html
ProxyHTMLURLMap "^/(simple|packages)/" "/pypi/$1/" [R]
</Location>
</VirtualHost>
是的,我启用了自动索引模块。如果我将“Alias”指令的第一个参数更改为“/ xyz”之类的目录,则目录列表可以正常工作。然后,http://example.com/pypi/packages正是我想做的http://example.com/xyz。请帮助,提前谢谢!