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

如何保留根目录.htaccess重定向逻辑并正常访问landing-page子目录页面

解决办法:保留根目录路由同时正常服务子目录落地页

这个问题的根源很直观:你的根目录.htaccess规则会把所有不存在的文件/目录请求转发到根目录index.php,但访问/landing-page/时,页面引用的静态资源(比如index.js)被浏览器请求成了根目录的/index.js——而根目录index.php返回的是HTML内容,JS解析时遇到<自然就触发了语法错误。

要解决这个问题,你需要做两件关键调整:修改.htaccess排除子目录重定向,同时确保落地页的静态资源路径正确。

1. 修改根目录.htaccess,排除landing-page的重定向

在现有重定向规则前,添加一条条件,让landing-page开头的请求不被转发到根目录index.php。修改后的完整.htaccess如下:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteBase /
RewriteRule ^index\.php$ - [L]

# 新增:排除landing-page目录的请求,优先处理该目录下的文件
RewriteCond %{REQUEST_URI} !^/landing-page/

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

这条新增的RewriteCond会告诉Apache:如果请求路径是以/landing-page/开头的,就跳过后面的根目录重定向规则,直接去该目录下寻找对应的文件。

2. 确保Svelte构建产物的资源路径正确

光改.htaccess还不够,你需要确认Svelte构建时,静态资源的引用路径是指向/landing-page/的,否则浏览器还是会错误请求根目录的资源。

如果你的项目用Vite构建(Svelte常用工具),在vite.config.js里设置base属性:

export default {
  base: '/landing-page/'
}

如果用Webpack构建,在webpack.config.js的output配置里设置publicPath:

module.exports = {
  // ...其他配置项
  output: {
    // ...其他output配置
    publicPath: '/landing-page/'
  }
}

重新构建你的Svelte落地页后,生成的home.html里的JS/CSS引用就会变成/landing-page/index.js这类正确的路径。

验证效果

完成以上两步后,访问/landing-page/:

  • 页面会正常加载landing-page/index.php
  • 静态资源会请求/landing-page/下的对应文件,不再被重定向到根目录
  • 控制台的语法错误也会彻底消失

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 09:57:51