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

请求帮助:.htaccess 301重定向移除URL中指定目录段

解决.htaccess中移除directory目录的301重定向问题

没问题,这其实是个非常常见的URL重定向需求,我给你整理了几种可靠的方案,你可以根据自己的服务器配置情况选择:

方案1:基础永久重定向规则

这是最直接的写法,适用于绝大多数Apache服务器环境。先确保你的网站根目录的.htaccess文件已经开启了重写引擎,然后添加以下规则:

RewriteEngine On

# 将 /directory/page/xxx 永久重定向到 /page/xxx
RewriteRule ^directory/page/(.*)$ /page/$1 [R=301,L]

我给你拆解下每个部分的作用:

  • RewriteEngine On:必须放在所有重写规则的最前面,用来开启Apache的URL重写模块
  • ^directory/page/(.*)$:这是匹配规则,^表示路径开头,(.*)是一个捕获组,会把directory/page/后面的所有内容(比如文章ID、URL后缀)都保存下来
  • /page/$1:这是重定向的目标路径,$1会替换成刚才捕获组里保存的内容,这样就完美保留了原URL后半部分的信息
  • [R=301,L]:R=301代表这是永久重定向(对SEO非常友好,搜索引擎会更新索引);L表示这是最后一条规则,匹配到后就不再处理后续的重写规则

方案2:带域名限定的严谨写法

如果你的服务器托管了多个域名,或者担心规则影响其他子域名,可以加上域名匹配条件,确保只对mysite.com生效:

RewriteEngine On

# 仅对 mysite.com 域名生效(不区分大小写)
RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC]
RewriteRule ^directory/page/(.*)$ /page/$1 [R=301,L]

这里的[NC]是No Case的缩写,意思是匹配域名时不区分大小写,避免因为大小写差异导致规则失效。


重要注意事项

  • 测试阶段建议先用R=302(临时重定向),确认重定向逻辑完全正确后再改成R=301——因为301是永久重定向,浏览器会缓存这个规则,后续修改可能需要清理缓存才能生效
  • 确保你的Apache服务器已经启用了mod_rewrite模块(绝大多数虚拟主机和服务器默认都是开启的,如果不确定可以联系主机商确认)
  • 如果网站根目录没有.htaccess文件,直接新建一个即可,注意文件名是**.htaccess**(前面的点不能少,这是Unix系统的隐藏文件)
  • 修改完.htaccess后,记得清理浏览器缓存或者用无痕模式测试,避免旧规则干扰

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:31:38