WordPress中.htaccess无法实现www跳转非www域名问题咨询
问题解决方案
- 跳转规则未生效的核心原因是规则执行顺序错误:Apache的Rewrite规则按从上到下的顺序匹配,你把跳转规则放在了WordPress默认路由规则的后方,而默认路由规则最后已经通过
[L]标记声明匹配成功后不再执行后续规则,因此跳转逻辑永远不会被触发。 - 另一个注意点:
# BEGIN WordPress和# END WordPress之间的内容会被WordPress自动覆盖,所有自定义规则必须放在这个代码块之外,否则后续调整固定链接等设置时自定义规则会丢失。
正确配置示例
直接把下面的内容完整替换你的.htaccess文件即可:
# 自定义跳转规则 放在最前面 <IfModule mod_rewrite.c> RewriteEngine On # www跳转至非www RewriteCond %{HTTP_HOST} ^www\.eepir\.oxem\.ru [NC] # 如果你的站点已启用HTTPS,请将下方的http替换为https RewriteRule ^(.*)$ http://eepir.oxem.ru/$1 [L,R=302] </IfModule> # BEGIN WordPress # Директивы (строки) между `BEGIN WordPress` и `END WordPress` # созданы автоматически и подлежат изменению только через фильтры WordPress. # Сделанные вручную изменения между этими маркерами будут перезаписаны. <IfModule mod_rewrite.c> RewriteEngine On RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress
验证注意事项
- 修改完成后先清空浏览器缓存,或使用无痕模式访问测试,避免302跳转缓存导致看到旧的结果。
- 确认你的Apache服务器已经启用
mod_rewrite模块,否则所有重写规则都不会生效。 - 确认跳转功能正常后,可将规则中的
R=302改为R=301,实现永久重定向,更有利于搜索引擎收录。 - 后续不要修改
# BEGIN WordPress和# END WordPress块内的内容,所有自定义规则都放在块外即可。
内容的提问来源于stack exchange,提问作者Мохамед Русланович
相关产品推荐
相关产品推荐

