如何更改从数据库检索的动态选择ID的URL结构

时间:2017-05-19 06:13:03

标签: php .htaccess url-rewriting

我想更改我的网址结构,而不是显示ID,它应显示全名并从结尾删除.php。

http://example.com/index.php?catid=5

这应转换为

http://example.com/MDM

此处 MDM 是从数据库中重新开始的类别名称。

我能得到任何帮助。

1 个答案:

答案 0 :(得分:0)

你基本上可以这两种方式:

使用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等方面具有更大的灵活性。对于偶发使用,.htaccess中的硬编码重写规则会很好。