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

如何使用PHP本地服务器(php.exe)创建SEO友好URL?

PHP内置服务器实现SEO友好URL

PHP内置开发服务器支持通过路由脚本实现URL重写,无需依赖Apache/Nginx的重写规则。以下是具体实现步骤:

1. 修改服务器启动命令

在原命令基础上,添加路由脚本参数(假设路由脚本名为router.php,放在项目根目录下,与web文件夹同级):

php -S localhost:80 -t "web/" router.php

这里-t "web/"指定文档根目录,router.php是自定义的路由处理脚本,所有请求会先经过它。

2. 编写路由脚本router.php

这个脚本负责解析SEO友好URL,映射到对应的PHP文件并传递参数。示例代码如下:

<?php
// 获取请求的URI路径
$requestUri = $_SERVER['REQUEST_URI'];
// 移除开头的斜杠和查询字符串
$path = trim(parse_url($requestUri, PHP_URL_PATH), '/');
$segments = explode('/', $path);

// 处理博客URL:localhost/blog/2023/10/01/blog-post
if (!empty($segments[0]) && $segments[0] === 'blog' && count($segments) === 5) {
    list($_, $year, $month, $day, $slug) = $segments;
    
    // 实际项目中,根据slug从数据库查询对应的文章ID
    // $postId = getBlogPostIdBySlug($slug);
    // $_GET['id'] = $postId;
    
    // 临时模拟:直接传递slug给blog.php
    $_GET['slug'] = $slug;
    // 加载对应的处理文件
    include __DIR__ . '/web/blog.php';
    exit;
}

// 处理艺术家作品URL:localhost/artist/Vincent-van-Gogh/art/Sunflowers
if (!empty($segments[0]) && $segments[0] === 'artist' && count($segments) === 4) {
    list($_, $artistSlug, $_, $workSlug) = $segments;
    
    // 实际项目中,根据slug查询艺术家ID和作品ID
    // $artistId = getArtistIdBySlug($artistSlug);
    // $workId = getWorkIdBySlug($workSlug);
    // $_GET['id'] = $artistId;
    // $_GET['work'] = $workId;
    
    // 临时模拟:传递slug给artist.php
    $_GET['artist_slug'] = $artistSlug;
    $_GET['work_slug'] = $workSlug;
    // 加载对应的处理文件
    include __DIR__ . '/web/artist.php';
    exit;
}

// 处理静态资源或原有PHP文件(如直接访问localhost/blog.php?id=1)
$targetFile = __DIR__ . '/web' . $requestUri;
if (file_exists($targetFile) && is_file($targetFile)) {
    // 返回false,让内置服务器自行处理该文件
    return false;
}

// 处理404情况
http_response_code(404);
echo '404 Not Found';
exit;

3. 调整业务PHP文件

比如blog.php中,原本通过$_GET['id']获取参数,现在可以改为通过$_GET['slug']查询数据库内容:

<?php
// blog.php
$slug = $_GET['slug'] ?? '';
// 根据slug查询文章内容
// $post = getBlogPostBySlug($slug);
// 输出文章内容...

关键说明

  • 路由逻辑:路由脚本通过解析URL路径段,匹配预设的SEO URL规则,再转发到对应的业务文件,同时传递必要参数(slug或查询后的ID)。
  • 静态资源兼容:脚本会检查请求的文件是否存在(如CSS、JS、图片),如果存在则返回false,让内置服务器直接处理,不影响静态资源加载。
  • 数据库依赖:实际项目中,你需要实现根据slug查询对应ID的逻辑,这部分需要结合你的数据库结构编写。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 19:12:17