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

Laravel捕获带.php后缀URL并重定向至无后缀对应URL

解决带.php后缀URL重定向到无后缀URL的方案

当然可以搞定这个问题!针对你升级Laravel后要保留原有SEO收录链接权重的需求,我推荐两种方案,优先用服务器层面的配置,因为效率更高,不用经过Laravel框架的额外处理:

方案一:服务器层面重定向(推荐)

Apache 配置(.htaccess)

如果你用的是Apache服务器,直接在Laravel项目的public/.htaccess文件中添加重定向规则,要放在Laravel默认的Rewrite规则之前:

RewriteEngine On

# 添加这两条规则处理.php重定向
RewriteCond %{REQUEST_URI} ^(.*)\.php$ [NC]
RewriteRule ^ %1 [R=301,L]

# 下面是Laravel原有的规则
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

规则说明:

  • RewriteCond %{REQUEST_URI} ^(.*)\.php$ [NC]:匹配所有以.php结尾的请求URI,[NC]表示不区分大小写
  • RewriteRule ^ %1 [R=301,L]:将匹配到的.php之前的部分作为新URL,返回301永久重定向(对SEO友好),[L]表示停止后续规则执行

Nginx 配置

如果是Nginx服务器,在你的站点配置文件的server块中添加以下规则:

server {
    # 其他配置...

    # 处理.php后缀的重定向
    location ~* \.php$ {
        rewrite ^/(.*)\.php$ /$1 permanent;
    }

    # Laravel原有的路由转发规则
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
}

规则说明:

  • ~* \.php$:不区分大小写匹配所有以.php结尾的请求
  • rewrite ^/(.*)\.php$ /$1 permanent;:去掉路径中的.php后缀,返回301永久重定向

方案二:Laravel路由层面处理

如果无法修改服务器配置,也可以在Laravel的路由中处理。在routes/web.php中添加以下路由,要放在所有其他路由的前面:

// 捕获所有带.php后缀的GET请求
Route::get('{url}.php', function ($url) {
    // 处理根目录的index.php,重定向到网站根路径
    $redirectUrl = $url === 'index' ? '/' : "/$url";
    // 返回301永久重定向
    return redirect()->permanent($redirectUrl);
})->where('url', '.*');

说明:

  • {url}.php会匹配所有形如xxx.php的路径,where('url', '.*')允许url参数包含斜杠(比如en/products.php中的en/products)
  • redirect()->permanent()生成301重定向响应,确保搜索引擎转移权重

重要注意事项

  • 必须用301永久重定向:301状态码告诉搜索引擎旧链接已经永久迁移到新链接,会把旧链接的SEO权重转移到新链接上;如果用302临时重定向,权重不会转移
  • 测试重定向:可以用浏览器开发者工具的「网络」面板,查看请求的状态码是否为301,确认重定向目标正确
  • 排除特殊链接:如果有个别.php链接需要保留(比如某些遗留的动态页面),可以在规则中添加排除条件。比如Apache可以加RewriteCond %{REQUEST_URI} !^/special-page.php$ [NC],Nginx可以调整location规则,Laravel可以修改路由的where条件排除特定路径

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:32:07