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

如何通过.htaccess实现WWW转非WWW并隐藏PHP后缀(含子目录)

解决WWW转非WWW+隐藏PHP后缀的异常问题

这个问题核心是规则执行顺序搞反了!你现在是先给URL加上.php后缀,再做WWW转非WWW的重定向,这就导致路径被错误拼接出domain.com/domain.com/page.php这种奇怪结果。咱们调整规则顺序,先处理域名跳转,再处理后缀隐藏,就能完美解决所有异常场景。

修正后的.htaccess代码

DirectoryIndex /index.php
RewriteEngine On

# 第一步:优先处理WWW转非WWW的301重定向
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]  # 若还未启用HTTPS,替换成http://%1/$1

# 第二步:隐藏PHP后缀——访问不带.php的路径时,实际加载对应.php文件
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [L]

# 可选优化:若用户直接访问带.php的URL,自动重定向到无后缀版本(提升SEO)
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(.+?)\.php[\s?] [NC]
RewriteRule ^ /%1 [R=301,L]

规则说明

  1. WWW转非WWW放在最前面:所有WWW开头的请求会先被重定向到对应的非WWW路径,比如:

    • www.domain.com/page → domain.com/page
    • www.domain.com/subfolder/page → domain.com/subfolder/page
      这一步确保路径还没被修改,不会出现错误拼接。
  2. 隐藏PHP后缀的逻辑:完成域名跳转后,再处理后缀隐藏,此时请求已经是非WWW的,逻辑和你原来正常访问domain.com/page的情况完全一致,不会出问题。

  3. 可选的带.php重定向:如果用户直接访问www.domain.com/page.php,会先跳转到domain.com/page.php,再自动重定向到domain.com/page,彻底隐藏后缀,同时避免重复内容影响SEO。

验证所有场景

  • ✅ www.domain.com → domain.com(保持原有正常跳转)
  • ✅ www.domain.com/page → domain.com/page(正确跳转)
  • ✅ www.domain.com/subfolder/page → domain.com/subfolder/page(完美适配子目录)
  • ✅ www.domain.com/page.php → domain.com/page(先转域名再去后缀)
  • ✅ domain.com/page → 正常加载page.php(保留原有功能)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:39:29