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

如何在VSCode中创建.htaccess文件并实现URL去.html后缀

解决URL去除.html后缀的问题

一、先纠正错误:无需在HTML中关联.htaccess

你用<link rel="htaccess" href="index.htaccess">的做法完全没用,.htaccess是Apache Web服务器的目录级配置文件,服务器会自动识别网站根目录下的.htaccess文件并执行其中规则,根本不需要在HTML页面里引用。

二、在VSCode中正确创建.htaccess文件

  • 打开VSCode,进入你的网站根目录
  • 点击左侧资源管理器的「新建文件」按钮
  • 直接输入文件名.htaccess(注意开头的点,这是隐藏文件,Linux/macOS下默认隐藏,Windows需要在文件夹选项里开启显示隐藏文件)
  • 保存后就能写入重写规则了

三、修复重写规则及服务器配置问题

你的规则逻辑没问题,但得先满足服务器的前提条件,同时可以优化规则避免潜在问题:

1. 确保Apache开启重写模块

  • Linux系统:执行sudo a2enmod rewrite启用模块,然后重启Apache:sudo systemctl restart apache2
  • Windows(XAMPP/WAMP):打开Apache的httpd.conf文件,找到#LoadModule rewrite_module modules/mod_rewrite.so,去掉前面的#,重启Apache服务

2. 允许服务器读取.htaccess配置

在Apache的主配置文件(httpd.conf或虚拟主机配置文件)中,找到对应网站目录的Directory块,设置AllowOverride All,示例:

<Directory "/path/to/your/website/folder">
    AllowOverride All
    Require all granted
</Directory>

修改完记得重启Apache。

3. 优化后的重写规则

替换你原来的规则为以下内容,能避免循环和错误匹配:

RewriteEngine On

# 对外跳转:把带.html的URL永久重定向到不带后缀的版本
RewriteCond %{THE_REQUEST} \s/+(.*?)\.html[\s?] [NC]
RewriteRule ^ /%1 [R=301,L,NE]

# 内部转发:访问不带后缀的URL时,实际加载对应的.html文件
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.*)$ $1.html [L]
  • R=301是永久重定向,对SEO更友好
  • NE防止URL里的特殊字符被转义
  • !-d用来排除目录,避免目录被错误匹配

四、测试验证

  1. 重启Apache服务器
  2. 访问原来的xxx.html页面,应该自动跳转到不带.html的URL
  3. 直接访问不带后缀的URL,能正常加载对应页面内容就说明成功了

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 05:21:00