php - 用 PHP 重写 URL

标签 php .htaccess url mod-rewrite url-rewriting

我有一个 URL,如下所示:

url.com/picture.php?id=51

我将如何将该 URL 转换为:

picture.php/Some-text-goes-here/51

我认为 WordPress 也是如此。

如何在 PHP 中创建友好的 URL?

最佳答案

您基本上可以通过两种方式执行此操作:

带有 mod_rewrite 的 .htaccess 路由

在您的根文件夹中添加一个名为 .htaccess 的文件,并添加如下内容:

RewriteEngine on
RewriteRule ^/?Some-text-goes-here/([0-9]+)$ /picture.php?id=$1

这将告诉 Apache 为这个文件夹启用 mod_rewrite,如果它被询问一个与正则表达式匹配的 URL,它会在内部将它重写为您想要的,而最终用户不会看到它。简单但不灵活,因此如果您需要更多功能:

PHP 路由

改为将以下内容放入您的 .htaccess 中:(注意前导斜线)

FallbackResource /index.php

这将告诉它运行您的 index.php 以获取它通常无法在您的站点中找到的所有文件。例如,您可以在那里:

$path = ltrim($_SERVER['REQUEST_URI'], '/');    // Trim leading slash(es)
$elements = explode('/', $path);                // Split path on slashes
if(empty($elements[0])) {                       // No path elements means home
    ShowHomepage();
} else switch(array_shift($elements))             // Pop off first item and switch
{
    case 'Some-text-goes-here':
        ShowPicture($elements); // passes rest of parameters to internal function
        break;
    case 'more':
        ...
    default:
        header('HTTP/1.1 404 Not Found');
        Show404Error();
}

这就是大型网站和 CMS 系统的做法,因为它在解析 URL、配置和数据库相关 URL 等方面提供了更大的灵 active 。对于零星使用,.htaccess 中的硬编码重写规则将不过做得很好。

关于php - 用 PHP 重写 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29215918/

相关文章:

php - 在 PHP 中创建等于当前时间减去一小时的变量

php - YII 框架中带有 id 和名称的 seo 友好 url

php - 如何修复 .htaccess 文件中的重定向循环?

php - 在 url mod_rewrite 中隐藏扩展名 .php

mysql - 考虑性能和友好 URL 时要实现的数据库 key 设计

javascript - 启用和禁用 HTML 按钮单击下拉菜单

php - 葡萄牙语 (pt_PT) 的本地化(双)变音位

php - 从数据库返回平均评分 (SQL)

.htaccess - 如何将站点重定向到新站点

php - 如何计算代码点火器中的总段数?