我的前端项目基于 1 个文件:frontend/index.html
这意味着每个请求(例如/contact
,/about
等)都应该通过文件来响应index.html
。
我以为我可以在我的httpd.conf
文件中无条件使用这些行:
<VirtualHost *:80>
DocumentRoot "/var/www/frontend/"
RewriteEngine On
RewriteRule . /var/www/frontend/index.html
</VirtualHost>
但我明白,任何现有文件(例如frontend/js/app.js
或等)在存在于真实目录中时frontend/favicon.ico
也将被响应。index.html
这就是我需要的:
请求:/contact
-> 无frontend/contact
文件 -> 响应:index.html
请求:/
-> 未请求文件 -> 响应:index.html
请求:/js/app.js
->frontend/js/app.js
存在->响应:frontend/js/app.js
ETC。
我可以在上面的块中的文件中写入什么httpd.conf
来执行这样的操作?
笔记:我使用是VirtualHost
因为我需要服务器请求的back-end
另一个端口()中的文件。:8080
答案1
您可以RewriteCond %{REQUEST_FILENAME} !-f
在重写规则之前添加,或者仅将 /var/www/frontend/index.html 映射为 404 处理程序(但您需要用 200 覆盖 404 响应)。