我有一个VirtualHost Alias路径,它使用"/myapp/"而不是"/myapp"加载/重定向。
我的服务器信息:
OS: Red Hat Enterprise Linux Server 7.6 (Maipo)
Kernel: Linux 3.10.*
我的/etc/httpd/conf.d/main.conf文件:
<VirtualHost *:80>
Alias /myapp /m009/www/myapp-source
<Directory /m009/www/myapp-source >
Options Indexes FollowSymlinks MultiViews
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
如果我访问mydomain.com/myapp/(注意额外的斜杠(,我会得到:
Here's the app!
如果我去mydomain.com/myapp(没有额外的斜杠(,我会得到:
- takes a long time to load
- redirects to mydomain:9080/myapp
- says "site can’t be reached"
我不确定这是正确的答案,因为我不知道所有信息。
您正在9080端口上运行应用程序吗。将ProxyPass /myapp !
放入虚拟主机有帮助吗?
如果没有,很抱歉。
Alias用于精确匹配路径,因此有三个选项:
- 添加第二个带有斜杠的Alias语句。这可能很糟糕,因为同一资源将有多个路径。例如
Alias /myapp/ /m009/www/myapp-source
- 使用AliasMatch可以匹配带有或不带有尾部斜线的路径。例如。
AliasMatch "/myapp/?" "/m009/www/myapp-source"
- [推荐]重写请求以删除尾部斜杠。注意,这可能会导致循环,具体取决于Apache安装的设置方式。首先检查DirectorySlash是打开还是关闭
<VirtualHost *:80>
RewriteEngine on
RewriteRule ^(.*)/+$ $1 [R=301,L]
Alias /myapp /m009/www/myapp-source
<Directory /m009/www/myapp-source >
Options Indexes FollowSymlinks MultiViews
AllowOverride All
Require all granted
</Directory>
</VirtualHost>