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

htaccess配置:实现无PHP后缀访问并强制重定向带后缀URL

解决PHP后缀URL自动重定向到无后缀版本的问题

我完全懂你的困扰——现在已经能实现无.php后缀访问页面,但用户输入带.php的URL时,虽然页面内容正常显示,地址栏却没自动跳转到干净的无后缀地址,这确实是URL美化里容易漏掉的一环。下面针对不同服务器环境给你具体的解决方案:

Apache 服务器(使用.htaccess)

如果你的服务器是Apache,直接在网站根目录的.htaccess文件里添加以下规则:

# 开启URL重写引擎(如果还没开启的话)
RewriteEngine On

# 规则1:当请求的是实际存在的.php文件时,永久重定向到无后缀版本
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(.+)\.php$ /$1 [R=301,L]

# 规则2:处理无后缀访问,内部转发到对应的.php文件(你可能已经有这条,但建议和上面的规则配合)
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+)$ /$1.php [L]

小提醒:

  • R=301是永久重定向,对SEO更友好;如果只是测试,可以先改成R=302临时重定向,确认没问题再改回301。
  • 要确保Apache开启了mod_rewrite模块,并且网站目录的配置里设置了AllowOverride All,否则.htaccess不会生效。

Nginx 服务器

如果用的是Nginx,修改你的站点配置文件(通常在/etc/nginx/sites-available/目录下),添加以下规则:

server {
    # 保留你原有的server配置(比如listen、server_name、root等)

    # 重定向带.php的URL到无后缀版本(permanent对应301永久重定向)
    rewrite ^(.+)\.php$ $1 permanent;

    # 处理无后缀访问的内部转发
    location / {
        try_files $uri $uri.php $uri/ =404;
    }
}

小提醒:

  • 添加规则后记得重启Nginx服务:sudo systemctl restart nginx
  • 如果有特殊的页面(比如后台管理页)需要保留.php后缀,可以单独加例外规则,比如在rewrite之前加if ($request_uri !~* /admin\.php$)来排除特定URL。

这样配置之后,用户访问www.website.com/page.php时,浏览器会自动跳转到www.website.com/page,地址栏也会同步更新,完美解决你现在的问题~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:00:42