使用.htaccess更改动态网址

时间:2012-05-19 17:48:33

标签: .htaccess

我有以下网址结构:

www.mysite.com/temporary/articles.php?artid=1

我想用

更改它
www.mysite.com/temporary/articles/article-title-here.

任何人都可以告诉我该怎么做?

此外,我还有两个变量链接:

www.mysite.com/temporary/products.php?catid=1&productid=1

我想要做到这一点:

www.mysite.com/temporary/products.php/category-name/product-name

提前致谢。

卓然

1 个答案:

答案 0 :(得分:0)

为此,您需要某种类型的脚本,可以将文章/类别/产品名称映射到ID。就编写这个脚本而言,你是独立的,但它可以像这样:

  1. 如果存在查询字符串变量article-name,则获取其值,查找数据库(或您正在使用的任何存储)并查看文章ID,然后加载/temporary/articles.php?artid=ID,其中ID是给定标题的ID。
  2. 如果存在查询字符串变量product-name和/或category-name,请查找数据库以查看这些名称的类别和产品ID,然后使用相应的名称加载/temporary/products.php?catid=1&productid=1的ID。
  3. 否则,做一些像返回404
  4. 的事情

    假设您编写的这个PHP脚本位于/my-controller.php

    ,相关的重写规则可以实现这一点
    RewriteRule ^temporary/articles/(.+)$ /my-controller.php?article-name=$1 [L]
    RewriteRule ^temporary/products.php/([^/]+)/(.+) /my-controller.php?category-name=$1&product-name=$2
    

    因此,如果有人请求http://www.mysite.com/temporary/articles/foo-article,则会将其重写为/my-controller.php?article-name=foo-article,当有人请求http://www.mysite.com/temporary/products.php/bars/foo-product时,会将其重写为/my-controller.php?category-name=bars&product-name=foo-product,这取决于您的脚本写入以执行必要的ID查找,然后将其传递给articles.php或products.php脚本。