Apache部署Angular 15应用时静态文件下载重写排除问题
解决Angular 15部署Apache时静态PDF被重定向为index.html的问题
问题分析
当前配置的核心问题有两个:一是Rewrite规则的逻辑或路径指向错误,导致存在的PDF文件仍被重定向到index.html;二是使用FallbackResource时因配置冲突引发子请求嵌套循环,返回500错误。
解决方案
方案1:修正Rewrite规则(推荐)
放弃按后缀匹配的方式,直接优先放行所有已存在的文件和目录,再将其余请求转发到子目录下的index.html(避免跳转到服务器根目录)。完整配置如下:
<Directory /var/www/html/mysubdomain/> Options Indexes FollowSymLinks AllowOverride None Require all granted RewriteEngine On # 放行所有实际存在的文件和目录,终止规则处理 RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^ - [L] # 所有其他请求转发到当前子目录下的index.html,由Angular处理路由 RewriteRule ^ /mysubdomain/index.html [L] </Directory>
方案2:正确使用FallbackResource
如果偏好FallbackResource,需关闭MultiViews避免内容协商冲突,同时确保指向正确的index.html路径,避免循环请求:
<Directory /var/www/html/mysubdomain/> Options Indexes FollowSymLinks -MultiViews AllowOverride None Require all granted # 直接将未匹配到文件/目录的请求转发到index.html FallbackResource /mysubdomain/index.html </Directory>
额外检查项
- 文件权限验证:确保Apache运行用户(通常为
apache或www-data)拥有PDF文件的读取权限,目录拥有访问权限:# 查看文件权限 ls -l /var/www/html/mysubdomain/path/to/your/file.pdf # 设置正确权限 chmod 644 /var/www/html/mysubdomain/path/to/your/file.pdf chmod 755 /var/www/html/mysubdomain/ - 前端路径验证:确认
environment.baseHref已正确设置为'/mysubdomain/',filepath对应服务器上的实际文件路径(比如PDF放在assets/pdf/下,filepath应为'assets/pdf/file.pdf'),确保请求URL与文件实际路径完全匹配。
内容的提问来源于stack exchange,提问作者okariotis
相关产品推荐
相关产品推荐

