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

解决.htaccess移除PHP扩展名仅根目录生效,子目录不生效问题

解决所有目录下PHP扩展名移除的.htaccess配置方案

原规则仅对根目录的index和contact页面生效,若要让所有目录(包括/blog/这类子目录)都能实现PHP扩展名移除,需要取消特定页面的限制,同时适配多级目录结构。

修改后的完整规则

RewriteEngine On

# 禁止直接访问.htaccess文件,提升安全性
RewriteRule ^\.htaccess$ - [F]

# 内部重写:将无扩展名请求映射到对应.php文件(支持所有目录)
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php [L]

# 外部跳转:将带.php的URL重定向到无扩展名版本(SEO友好)
RewriteCond %{THE_REQUEST} \s/(.+?)\.php[\s?] [NC]
RewriteRule ^(.+?)\.php$ /$1 [L,R=301]

规则说明

  • 禁止访问.htaccess:避免配置文件被直接查看,增强站点安全性。
  • 内部重写规则:先判断请求路径不是目录,且对应的.php文件确实存在,再将无扩展名的请求内部映射到实际的.php文件,支持任意层级的子目录。
  • 外部跳转规则:当用户直接访问带.php扩展名的URL时,通过301永久重定向跳转到无扩展名版本,避免重复内容影响SEO。

额外提示

  • 确保服务器已开启mod_rewrite模块,否则规则无法生效。
  • 测试前建议清空浏览器缓存,因为301重定向会被浏览器缓存,可能导致旧规则残留。
  • 若需对特定目录/页面例外处理,可在规则前添加排除条件,比如:
    # 排除/admin/目录下的文件不应用扩展名移除规则
    RewriteCond %{REQUEST_URI} !^/admin/
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 08:07:07