如何使用.htaccess将page/后带动态值的URL重定向至page/?
解决方法
你现有代码存在几个明显问题:
- 正则表达式完全写错:
RewriteCond里的(\page\.[a-zA-Z0-9])$不符合你的URL结构,多了不必要的反斜杠,还错误匹配了点号,根本抓不到abcderf这类动态值。 - 规则匹配范围不对:
RewriteRule的^(.+)/$只匹配以斜杠结尾的URL,但你的目标URL是www.example.com/page/abcderf(无结尾斜杠),所以根本触发不了重定向。
下面是正确的.htaccess配置:
RewriteEngine On # 将 /page/xxx(xxx为任意字母数字动态值)重定向到 /page/ RewriteRule ^page/([a-zA-Z0-9]+)$ /page/ [R=301,L]
规则说明:
RewriteEngine On:必须先开启重写引擎,否则所有规则都无效。^page/([a-zA-Z0-9]+)$:精准匹配URL结构,^代表URL开头,page/是固定路径部分,([a-zA-Z0-9]+)匹配1个及以上的字母/数字(对应你的动态值abcderf),$代表URL结尾。/page/:重定向的目标路径,用相对路径比硬编码域名更灵活,适配不同环境。[R=301,L]:R=301表示永久重定向,对SEO友好;L表示匹配到这条规则后停止执行后续规则,避免冲突。
如果你的动态值可能包含字母数字以外的字符(比如下划线、短横线),可以把正则改成^page/[^/]+$,这样能匹配/page/后面任意不包含斜杠的字符:
RewriteEngine On RewriteRule ^page/[^/]+$ /page/ [R=301,L]
内容的提问来源于stack exchange,提问作者articeo articeo
相关产品推荐
相关产品推荐

