Symfony5子目录项目如何去除URL中的/public访问路径?
前提检查
先确认两项服务器配置是否满足:
- Apache已启用
mod_rewrite模块 - 站点Apache配置中,
public_html目录对应的AllowOverride参数设置为All,否则.htaccess规则不会生效
步骤1:更新HELP目录下的.htaccess规则
将.htaccess文件放在public_html/HELP/根目录(不要放在public子目录内),替换原有规则为以下内容:
<IfModule mod_rewrite.c> RewriteEngine On # 配置子目录重写基路径 RewriteBase /HELP/ # 避免public路径循环重写 RewriteRule ^public/ - [L] # 静态文件直接返回,不存在的请求转发到public目录 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ public/$1 [L] </IfModule>
步骤2:适配Symfony子目录配置
修改Symfony项目配置,避免路由、静态资源路径生成错误:
- 打开
config/packages/framework.yaml,添加根路径配置:
framework: # 匹配部署的子目录前缀 base_uri: '/HELP'
- 若使用Webpack Encore打包静态资源,修改
webpack.config.js配置:
Encore // 其他原有配置保持不变 .setPublicPath('/HELP/build') .setManifestKeyPrefix('build/')
步骤3:清理Symfony缓存
部署完配置后,执行生产环境缓存清理命令生效:php bin/console cache:clear --env=prod
完成以上操作后即可直接通过example.com/HELP访问项目,无需拼接/public路径。
内容的提问来源于stack exchange,提问作者Steven Lee
相关产品推荐
相关产品推荐

