如何通过.htaccess设置静态页为根目录,迁移WordPress到/blog并重定向404
实现方案
你的需求完全可以通过修改根目录的.htaccess文件实现,修改后可以保证根目录静态页面正常访问,所有原本会触发404的请求全部自动重定向到/blog路径下,避免原有内容链接失效。
修改后的完整.htaccess内容
#DirectoryIndex index.php index.html #Options +FollowSymLinks # Indexes Options All -Indexes # REDIRECT https RewriteEngine On RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ https://example.com/$1 [R,L] # 根目录不存在的资源重定向到/blog路径 # 迁移过程中可以先用R=302临时重定向,确认所有链接正常后改为R=301永久重定向利于SEO RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /blog/$1 [R=302,L] # BEGIN FileETag MTime Size <ifmodule mod_expires.c> <filesmatch "\.(jpg|gif|png|css|js)$"> ExpiresActive on ExpiresDefault "access plus 1 year" </filesmatch> </ifmodule> # END FileETag MTime Size<!--formatted--> # Protecting htaccess <files .htaccess> order allow,deny deny from all </files> # Protecting wpconfig.php <files wp-config.php> order allow,deny deny from all </files>
关键改动说明
- 删除了原根目录下的WordPress重定向规则,WordPress迁移到
/blog目录后,会自动在/blog目录下生成适配子目录的.htaccess规则,不需要保留根目录的WP规则 - 新增的重定向规则只会对根目录下不存在的文件/目录触发,不会影响你放在根目录的静态页面、静态资源的正常访问
- 重定向默认使用302临时跳转,避免迁移过程中出问题被搜索引擎缓存错误规则,全链路验证正常后可将
R=302改为R=301
后续操作提醒
- 将所有WordPress文件完整迁移到
/blog目录后,登录WordPress后台,将「站点地址(URL)」「WordPress地址(URL)」都修改为https://example.com/blog保存 - 规则生效后可验证:根目录静态文件(如
/index.html)正常访问,原有旧文章链接(如/my-first-post)会自动跳转到/blog/my-first-post
内容的提问来源于stack exchange,提问作者Antonio Laguna
相关产品推荐
相关产品推荐

