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

时间:2017-11-04 23:10:48

标签: php mysql .htaccess mod-rewrite

我有一个包含电影的数据库,每个视频都有 ID TITLE 。 我想为每个人提供友好网址'。 我知道我必须使用 mod_rewrite, 如何动态完成?

最近我通过添加类似的文件来做到这一点 RewriteRule movie-title-year movie.php?id = 17 在文件的末尾 - 当我通过表单添加电影时。

但这不是一个好方法。

我希望以某种方式自动生成每部电影的/ movie-title-year。

抱歉我的英文。

1 个答案:

答案 0 :(得分:0)

如果没有,或者最少使用mod_rewrite,我将如何做到。

如果不了解更多有关您的设置的话,这将需要一些工作,很难说。

首先,我会更改数据库中的架构。

  1. 备份表格(称之为movies,因为我不知道您的名字) - 始终进行备份。

  2. 输出表架构:    SHOW CREATE TABLE movies

  3. 修改表架构    添加我们的新列slug    为列添加唯一索引    将表格名称更改为' tmp_movies'

  4. 编写PHP脚本以将记录从旧表复制到新表    补丁丢失slug(可能是标题小写,代替空格)    必须考虑可能的重复slu ..

  5. DROP the orignal table,并将tmp表重命名为movie

  6. 现在您的数据库已修复。

    1. 更改您查找页面的方式,从使用id等到使用slug。

    2. 更改添加新电影的方式以创建slu ..

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

    4. 喜欢(我只是猜测htaccess)

         //type1  (URI)
         www.example.com/index.php/movies/slug  //typical url
      
         ^movies/([^/]*) index.php/movies/$1 [L]  //htaccess
      
         www.example.com/movies/slug  //re-written url
      
         -------------------------------------------------------------
         //type2  (Query)
         www.example.com/index.php?page=movies&slug=slug  //typical url
      
         ^movies/([^/]*) /index.php?page=movies&slug=$1 [L] //htaccess
      
         www.example.com/movies/slug  //re-written url
      

      现在查看您的问题,您的网址中的ID可能不会更多。喜欢:

         www.example.com/movies/index.php?movie_id=2034
      

      你需要一些具有更多吸引力的东西

         www.example.com/movies/murder-on-the-orient-express 
      

      从这个movie_id=2034murder-on-the-orient-express的唯一方法是手动重写每一个(这很荒谬)或添加你缺少的东西。

      希望有所帮助。