如何在.htaccess中实现特定WordPress页面到非WordPress页面的301重定向
解决旧WordPress /news/ 页面重定向至新页面且不影响现有/news/路径的方案
核心需求是将旧WordPress环境的根路径/news/(含不带斜杠的/news)永久重定向到shop-news.php,同时不干扰新环境中/news/开头的子页面(如/news/2020/...),且兼容已有的子页面重定向规则。
最优.htaccess规则配置
将以下规则放在所有已有的Redirect 301规则之前,确保执行优先级:
# 开启重写引擎 RewriteEngine On # 精确匹配旧WordPress的/news/页面,排除真实存在的文件/目录(避免影响新环境的/news/路径) RewriteCond %{REQUEST_URI} ^/news/?$ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^ https://www.example.com/shop-news.php [R=301,L] # 已有的子页面重定向规则(保持原样) Redirect 301 /newsitem1/ https://www.example.com/news/2020/newsitem1.php Redirect 301 /newsitem2/ https://www.example.com/news/2021/newsitem2.php Redirect 301 /newsitem3/ https://www.example.com/news/2021/newsitem3.php
规则说明
RewriteCond %{REQUEST_URI} ^/news/?$:精确匹配请求路径为/news/或/news,^和$确保仅匹配完整的根路径/news,不会误匹配/news/2020/这类子路径。RewriteCond %{REQUEST_FILENAME} !-f和!-d:排除新环境中真实存在的/news文件或目录,避免对新路径产生干扰。[R=301,L]:标记为301永久重定向,L表示匹配后终止后续规则处理,防止和下方的子页面重定向规则冲突。
注意事项
- 先使用
R=302临时重定向测试规则有效性,确认无误后再改为R=301,避免浏览器缓存错误规则。 - 确保服务器已启用
mod_rewrite和mod_alias模块。
内容的提问来源于stack exchange,提问作者Jess99
相关产品推荐
相关产品推荐

