You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.htaccess配置调整:允许assets目录JSON访问及Vaadin路由修复

解决.htaccess配置问题的方案

以下是调整后的.htaccess配置,同时解决JSON文件访问限制和Vaadin Router刷新404的问题:

# 开启重写引擎
RewriteEngine On

# 允许访问assets/i18n目录下的JSON文件(优先放行,避免被后续禁止规则拦截)
RewriteRule ^assets/i18n/.*\.json$ - [L]

# 禁止访问敏感配置文件
RewriteRule ^\.env$ - [F,L]
# 禁止除assets/i18n外的其他JSON文件
RewriteRule ^(?!assets/i18n/).*\.json$ - [F,L]

# 处理Vaadin Router路由与PHP扩展名隐藏
# 跳过真实存在的文件和目录,避免静态资源被重写
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# 将/page/123这类路由映射到page.php/123,保留路径参数
RewriteRule ^([^/]+)(/.*)?$ $1.php$2 [L,QSA]

规则说明:

  • JSON文件访问控制:
    先通过RewriteRule ^assets/i18n/.*\.json$ - [L]放行目标目录下的JSON文件,L标记确保这部分请求不会被后续的禁止规则处理;再用^(?!assets/i18n/).*\.json$的负向断言,禁止其他所有JSON文件访问,同时保护.env文件。

  • 路由与扩展名隐藏:

    • RewriteCond %{REQUEST_FILENAME} !-f和RewriteCond %{REQUEST_FILENAME} !-d确保只有当请求的路径不是真实文件/目录时才执行重写,避免图片、CSS等静态资源被错误处理。
    • RewriteRule ^([^/]+)(/.*)?$ $1.php$2 [L,QSA]将/page映射到page.php,/page/123映射到page.php/123:
      • ([^/]+)匹配路由的第一部分(如page),作为PHP文件名;
      • (/.*)?匹配后续的路径部分(如/123),作为PATH_INFO传递给PHP;
      • QSA标记保留原请求的查询字符串,比如/page/123?foo=bar会被映射到page.php/123?foo=bar。

在PHP代码中,你可以通过$_SERVER['PATH_INFO']获取/123这类路径参数,配合Vaadin Router处理前端路由逻辑。

内容的提问来源于stack exchange,提问作者Sean

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 20:03:15