使用htaccess重定向含指定单词的URL(排除特定页面)
嗨,我来帮你搞定这个.htaccess重定向需求!结合你描述的场景,我们可以借助Apache的mod_rewrite模块来实现,下面是具体的配置和详细说明:
完整的.htaccess重定向规则
# 开启重写引擎 RewriteEngine On # 排除指定的两个页面,不执行重定向 # 请把exclude-page1.html、exclude-page2.html替换成你实际要排除的页面路径 RewriteCond %{REQUEST_URI} !^/string/(exclude-page1|exclude-page2)\.html$ # 匹配所有包含"string"前缀的URL,并重定向到去掉前缀后的路径 # 请把"string"替换成你实际要匹配的特定单词 RewriteRule ^string/(.*)$ /$1 [R=301,L]
规则拆解说明
- 开启重写引擎:
RewriteEngine On是必须的,它告诉Apache我们要启用URL重写功能。 - 排除规则:
RewriteCond用来设置重写的前置条件,这里的规则意思是:如果请求的URI不是/string/exclude-page1.html或/string/exclude-page2.html,才会执行后面的重定向逻辑。 - 核心重定向规则:
RewriteRule ^string/(.*)$ /$1 [R=301,L]^string/(.*)$:匹配所有以string/开头的URL,(.*)会捕获string/后面的所有内容(包括空值,比如/string/这种情况)。/ $1:把捕获到的内容放到网站根路径下,实现去掉string/前缀的效果。[R=301,L]:R=301表示永久重定向(如果只是临时测试,可以改成R=302);L表示这是最后一条规则,匹配后就停止处理后续规则。
注意事项
- 请根据实际需求替换规则中的
string、exclude-page1.html和exclude-page2.html。 - 确保你的服务器已经开启了mod_rewrite模块(大部分主流主机默认是开启的,如果不确定可以联系主机商确认)。
- 测试阶段建议先用
R=302临时重定向,确认规则生效后再改成R=301,避免浏览器缓存错误的重定向规则。 - .htaccess文件要放在网站的根目录下,并且设置正确的权限(一般是644)。
内容的提问来源于stack exchange,提问作者Freejoy
相关产品推荐
相关产品推荐

