从PHP中的DB字段替换Rewrited URL

时间:2011-06-10 13:59:39

标签: php url-rewriting

我的环境是Apache,DB是mySQL,语言是PHP。

我需要创建一个拦截请求的中间层并检查"http://www.something.com/apple/ipad-2-cases/"等网址,然后查找数据库以及appleipad-2-cases都有一个计数器如下:

产品表

  1. p_id - > 1
  2. p_name - > “ipad公司”
  3. p_custom_url - > “的ipad -2-例”
  4. 品牌表

    1. b_id - > 2
    2. b_name - > “苹果”
    3. b_custom_url - > “苹果”
    4. 并将网址转换为"http://www.something.com/products.php?b_id=2&p_id=1",我可以抓取b_idp_id以显示相应的产品信息。

      它基本上看起来像Joomla中实现的方式。您可以通过键入额外的字段来定义自己的用户友好网址,否则它会实现默认设置。

      由于我是PHP的新手,我不太清楚如何实现这一目标。在asp.net中,我一直在使用URL-Writer库,它使用HttpHandlersHttpModules拦截当前请求并进行适当的替换。

      是否有任何图书馆或其他东西可以帮助我解决这个问题?或者我是否需要使用.htaccess(我知道我需要打开mod_urlwrite上的.htaccess

      非常感谢。

1 个答案:

答案 0 :(得分:2)

使用名称而不是ID。

在.htaccess中使用mod_rewrite来自

http://www.something.com/apple/ipad-2-cases/ 

http://www.something.com/products.php?b=apple&p=ipad-2-cases

并在products.php

中找到相关的ID

修改
在.htaccess中创建一个这样的规则:

RewriteRule ^[^/]+/([A-Za-z_-]+)/([A-Za-z_-]+)$ products.php?b=$1&p=$2