You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel环境下用.htaccess实现非www域名重定向至www子域名(Nginx)

非www转www重定向失效的解决办法

你的.htaccess配置里的重定向规则存在几个可优化的点,调整后即可解决问题:

1. 规则匹配范围过窄

当前规则仅精确匹配paulevanscoaching.com,如果请求带端口或其他主机头变种就不会触发重定向。改成匹配所有不以www开头的请求更稳妥:

# 替换原有的非www转www规则
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^(.*)$ http://www.%1/$1 [L,R=301,NE]

2. 协议适配问题(若站点用HTTPS)

如果你的站点已经启用HTTPS,原规则里硬写的http://会导致重定向到HTTP协议,可能触发浏览器安全拦截或缓存异常。改用%{REQUEST_SCHEME}自动适配当前协议:

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^(.*)$ %{REQUEST_SCHEME}://www.%1/$1 [L,R=301,NE]

3. 浏览器缓存干扰

之前多次测试的301永久重定向会被浏览器强缓存,测试时可先换成R=302临时重定向,确认生效后再改回301,或用无痕模式/清除浏览器缓存测试。

修改后的完整.htaccess配置

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # Redirect non-www to www.
    RewriteCond %{HTTP_HOST} !^www\. [NC]
    RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
    RewriteRule ^(.*)$ %{REQUEST_SCHEME}://www.%1/$1 [L,R=301,NE]

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

    # Send Requests To Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

另外请确认服务器已启用mod_rewrite模块,你的配置里已经通过<IfModule mod_rewrite.c>做了判断,只要模块开启就会生效。

内容的提问来源于stack exchange,提问作者Luke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 09:01:00