多域名服务器下通过.htaccess配置WordPress语言子目录
多域名环境下WordPress语言子目录的.htaccess修复方案
一、先调整根目录的.htaccess规则
给domain3添加对应的转发规则,兼容语言子目录路径:
# domain 3 - 统一跳转到非www域名 RewriteCond %{HTTP_HOST} www.domain3.com RewriteRule (.*) http://domain3.com/$1 [L,QSA,R=301] # 把domain3的所有请求(含语言子目录)转发到对应WP目录 RewriteCond %{HTTP_HOST} ^domain3.com RewriteRule !^$ apps/wp_domain3%{REQUEST_URI} [L]
这条规则会把domain3.com/es/xxx这类请求完整转发到apps/wp_domain3/es/xxx,确保WP能识别语言子目录路径。
二、修改domain3对应的WP目录内的.htaccess
找到apps/wp_domain3里的.htaccess,替换成以下配置,专门适配语言子目录:
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / # 直接放行index.php RewriteRule ^index\.php$ - [L] # 处理语言子目录请求,同时放行真实存在的文件/目录(解决样式丢失) RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([a-z]{2})/(.*)$ index.php?lang=$1&$2 [L,QSA] # 处理非语言子目录的常规WP请求 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress
关键作用说明
- 样式/静态资源修复:
!-f和!-d判断会跳过真实存在的css、js、图片文件,直接返回,不会被重写规则干扰,解决样式丢失问题。 - 语言子目录路由:匹配两位语言码的子目录(比如/es/),把语言参数传递给WP,同时保留后续的请求路径,让WP能正确识别语言环境。
- 后台/登录修复:
wp-admin/是真实存在的目录,会被!-d跳过重写,直接访问;配合你已经改好的数据库home和siteurl(需设为http://domain3.com/es/),登录时的重定向会自动适配语言子目录,避免跳转错误。
三、测试步骤
- 清空浏览器缓存,访问
domain3.com/es/,检查页面样式是否正常加载。 - 访问
domain3.com/es/wp-admin/,尝试登录后台,确认能正常进入和操作。 - 测试登录后的跳转,确保没有循环重定向或错误路径。
内容的提问来源于stack exchange,提问作者Insomnia88
相关产品推荐
相关产品推荐

