HTaccess配置求助:exemple.net重定向至https://www.exemple.com失败
解决exemple.net重定向到exemple.com的.htaccess配置问题
我来帮你搞定这个重定向的问题,你的原配置里有几个关键错误,导致访问exemple.net时跳转到了404页面,咱们一步步修正:
原配置的核心问题
- 变量使用错误:你用了
%{REMOTE_HOST},这个变量是访问者IP对应的主机名,不是用户请求的域名!应该用%{HTTP_HOST}来匹配用户实际访问的域名。 - 规则顺序混乱:域名重定向的规则必须放在最前面,不然其他规则(比如自动加.php后缀的规则)会先执行,可能触发404后才走重定向流程。
- 重定向规则不完整:没有保留用户请求的路径和查询参数,也缺少
L标志(停止后续规则执行),导致后续规则继续运行引发错误。
正确的.htaccess配置
# 开启URL重写引擎 RewriteEngine On # 1. 优先处理所有exemple.net的请求(带www或不带),重定向到https://www.exemple.com,保留路径和参数 RewriteCond %{HTTP_HOST} ^(www\.)?exemple\.net$ [NC] RewriteRule ^(.*)$ https://www.exemple.com/$1 [R=301,L,QSA] # 2. 处理exemple.com的非www跳转,强制转到带www的HTTPS地址 RewriteCond %{HTTP_HOST} ^exemple\.com$ [NC] RewriteRule ^(.*)$ https://www.exemple.com/$1 [R=301,L,QSA] # 3. 强制所有www.exemple.com的请求使用HTTPS(防止用户通过HTTP访问) RewriteCond %{HTTPS} off RewriteCond %{HTTP_HOST} ^www\.exemple\.com$ [NC] RewriteRule ^(.*)$ https://www.exemple.com/$1 [R=301,L,QSA] # 4. 隐藏.php文件后缀(仅当对应的.php文件存在时才生效) RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.php -f RewriteRule ^([^\.]+)$ $1.php [NC,L] # 5. 设置404错误页面(建议用相对路径,避免潜在的重定向循环) ErrorDocument 404 /404.php # 如果你的404页面是不带.php的路径(比如已经通过上面的规则处理),可以用: # ErrorDocument 404 https://www.exemple.com/404
配置说明
- 域名重定向优先:先把所有
.net的流量直接导去.com的HTTPS地址,确保旧域名的访问不会触发其他规则。 - HTTPS和www统一:确保所有
.com的访问都强制使用HTTPS和www前缀,符合你的需求。 - 安全的PHP后缀隐藏:加了两个条件,只有当请求的不是目录、且对应的
.php文件真实存在时,才会自动加上后缀,避免不存在的路径触发错误。 - 404页面优化:用相对路径可以避免如果404页面本身配置出错导致的循环重定向问题。
测试注意事项
因为301是永久重定向,浏览器会缓存旧的重定向规则,测试前记得清空浏览器缓存,或者用隐私模式访问测试。
内容的提问来源于stack exchange,提问作者webmaster monresto
相关产品推荐
相关产品推荐

