Php 使用.htaccess和mod_rewrite为数据库中的结果创建友好的URL

Php 使用.htaccess和mod_rewrite为数据库中的结果创建友好的URL,php,mysql,.htaccess,mod-rewrite,Php,Mysql,.htaccess,Mod Rewrite,我有一个电影数据库,每个视频都有一个ID,标题和年份。 我想为每个人提供友好的URL。 我知道我必须使用修改, 如何动态执行? 最近,我通过在一个文件中添加类似 RewriteRule movie title year movie.php?id=17在文件末尾-当我通过表单添加电影时 但这不是一个好办法 我希望它以某种方式自动生成,就像每部电影的电影标题年一样 对不起,我的英语太差了。如果不使用mod_rewrite,或者使用最少的mod_rewrite,我会怎么做呢 这将需要一些工作,很难说不

我有一个电影数据库,每个视频都有一个ID标题和年份。 我想为每个人提供友好的URL。 我知道我必须使用修改, 如何动态执行?

最近,我通过在一个文件中添加类似 RewriteRule movie title year movie.php?id=17在文件末尾-当我通过表单添加电影时

但这不是一个好办法

我希望它以某种方式自动生成,就像每部电影的电影标题年一样


对不起,我的英语太差了。

如果不使用mod_rewrite,或者使用最少的mod_rewrite,我会怎么做呢

这将需要一些工作,很难说不知道更多关于您的设置

首先,我将更改数据库中的模式

  • 备份表(称之为电影,因为我不知道你叫它什么)-始终进行备份

  • 输出表架构:
    SHOW CREATE TABLE电影

  • 修改表架构 添加我们的新列
    slug
    为列添加唯一索引 将表名更改为“tmp_电影”

  • 编写PHP脚本将记录从旧表复制到新表 修补缺少的slug(可能标题为小写,用-代替空格) 必须考虑可能的重复段塞

  • 删除原始表,并将tmp表重命名为
    movie

  • 现在您的数据库已修复

  • 更改页面的查找方式,从使用id等更改为使用slug

  • 更改添加新电影以创建slug的方式

  • 添加一个简单的重写规则来替换查找电影的新方式

  • 比如(我只是在猜测htaccess)

    你现在的问题是,你可能没有比url中的ID更多的内容。比如:

       www.example.com/movies/index.php?movie_id=2034
    
    你需要这样更有吸引力的东西

       www.example.com/movies/murder-on-the-orient-express 
    
    从这部电影到东方快车上的谋杀案,唯一的办法就是手动重写每一部电影(这很荒谬),或者加上你遗漏的东西


    希望这能有所帮助。

    你的可能副本实际上可以不用mod rewrite就可以做到这一点,你可以在数据库中保存一个slug或hash,然后当你在数据库中查找电影时,用它代替id,你可以做像
    mydomain.com/movie.php/{slug}这样的链接
    然后,如果您真的想通过重写删除
    movie.php
    ,您可以这样做。对于未来的电影,当你第一次创作它们的时候,你只需要投入一小段时间。。。没有重写更改。这些天我懒得修改重写规则。我有4行,我有漂亮的URL,它们实际上是最漂亮的。
       www.example.com/movies/murder-on-the-orient-express