如何通过.htaccess配置Apache将请求重写至build/public目录
Apache .htaccess 重写路由到build/public目录配置方案
前置要求
- 确保Apache已开启
mod_rewrite模块 - 确保站点配置中对应目录的
AllowOverride参数设置为All,否则.htaccess文件不会生效
配置方案(.htaccess放在项目根目录user/project/下,推荐)
直接在项目根目录新建.htaccess文件,写入以下内容即可:
RewriteEngine On # 仅当请求的文件/目录不存在时执行重写,避免覆盖项目根目录真实存在的资源 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # 将所有请求路由到build目录下,完整保留原请求路径 RewriteRule ^(.*)$ build/$1 [L]
如果你的输出目录是public,把上面规则里的build替换为public即可生效。
配置方案(.htaccess放在站点根目录下)
如果你需要全局配置规则,或者不想在项目目录下单独放置.htaccess,可以在站点根目录的.htaccess文件里写入以下内容:
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^user/project/(.*)$ /user/project/build/$1 [L]
常见问题排查
- 如果访问出现404错误,先检查
build目录下是否存在对应资源,再确认Apache进程对build目录有可读权限 - 如果规则不生效,执行
apache2ctl -M(Linux环境)或查看Apache面板模块列表,确认rewrite_module处于开启状态 - 存在多条重写规则时可调整规则顺序,当前路由规则建议放在其他业务规则之后避免冲突
内容的提问来源于stack exchange,提问作者Nick Wilson
相关产品推荐
相关产品推荐

