Apache 将任何 uri 重写为 index.html,但现有文件

Apache 将任何 uri 重写为 index.html,但现有文件

我的前端项目基于 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 响应)。

相关内容