如何使用.htaccess移除URL中的文件夹路径?
URL重写:将 /html/mypage 映射为 /mypage(地址栏仅显示后者)
Apache 环境配置
先确保服务器已启用 mod_rewrite 模块,然后在网站根目录的 .htaccess 文件(或 Apache 配置文件的对应 <Directory> 块)中添加规则:
RewriteEngine On # 仅当请求的不是实际存在的文件/目录时执行重写,避免干扰静态资源 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # 单个页面重写:匹配 /mypage 并转发到 /html/mypage RewriteRule ^mypage$ /html/mypage [L] # 若要批量处理 html 目录下所有页面,替换上面的 RewriteRule 为: # RewriteRule ^(.*)$ /html/$1 [L]
[L] 标记表示这是最后一条规则,防止后续规则干扰。配置完成后,访问 https://example.com/mypage 时,浏览器地址栏保持不变,实际加载的是原 /html/mypage 页面。
Nginx 环境配置
在网站对应的 server 配置块中添加重写规则:
# 单个页面重写 rewrite ^/mypage$ /html/mypage last; # 批量处理 html 目录所有页面的话,替换为: # rewrite ^/(.*)$ /html/$1 last;
last 标记表示停止当前规则集,开始处理新的 URI 规则。同样,访问时地址栏显示去除 /html 后的路径,实际请求的是原页面。
如果网站有独立的静态资源目录(如 /static/),批量重写时需要优先匹配这些目录避免资源加载失败,比如在 Nginx 中添加:
location /static/ { # 静态资源直接返回,不执行重写 } rewrite ^/(.*)$ /html/$1 last;
内容的提问来源于stack exchange,提问作者Mandara
相关产品推荐
相关产品推荐

