WordPress上传文件夹301重定向至www失效,求解决方法
解决WordPress上传文件及robots.txt的WWW重定向问题
当前根目录的WWW重定向规则仅对页面生效,但直接访问wp-content/uploads下的图片/PDF或robots.txt时无法跳转,核心原因是Apache检测到文件实际存在时,会直接返回文件内容,跳过后续重写规则。以下是两种可行的解决方法:
方法1:调整根目录.htaccess规则顺序(优先推荐)
将WWW重定向规则放在WordPress默认重写规则最前面,确保所有请求(包括文件、目录)先经过跳转判断:
RewriteEngine On # 强制所有非WWW请求跳转至WWW版本,覆盖页面、文件、目录 RewriteCond %{HTTP_HOST} ^mywebsite.com$ RewriteRule ^(.*)$ https://www.mywebsite.com/$1 [R=301,L] # 保留WordPress默认重写规则(不要修改这部分) RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L]
方法2:针对特定资源添加定向规则
若方法1无效,可单独为uploads目录和robots.txt添加专属重定向:
RewriteEngine On # 处理uploads目录下的所有文件 RewriteCond %{HTTP_HOST} ^mywebsite.com$ RewriteRule ^wp-content/uploads/(.*)$ https://www.mywebsite.com/wp-content/uploads/$1 [R=301,L] # 处理robots.txt文件 RewriteCond %{HTTP_HOST} ^mywebsite.com$ RewriteRule ^robots.txt$ https://www.mywebsite.com/robots.txt [R=301,L] # 原有页面重定向规则 RewriteCond %{HTTP_HOST} ^mywebsite.com$ RewriteRule (.*) https://www.mywebsite.com/$1 [R=301,L] # WordPress默认重写规则 RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L]
关键注意事项
- 修改前务必备份原
.htaccess文件,避免网站故障 - 测试阶段建议用
[R=302,L]临时跳转,确认生效后再改为301永久跳转,防止浏览器缓存旧规则 - 确保服务器Apache配置中,网站根目录的
AllowOverride已设置为All,否则.htaccess规则无法生效
内容的提问来源于stack exchange,提问作者user22801548
相关产品推荐
相关产品推荐

