mod重写 - 有很好的网址,但仍然从数据库动态构建菜单

时间:2015-07-27 19:09:16

标签: php apache .htaccess mod-rewrite url-rewriting

我正在从数据库动态创建菜单。我首先在url中附加一个id,我用它来识别数据库中的页面,然后从子页面中获取所有URL等等。

所以我有很多这样的id www.page.com/somefolder/pagename.php?id=10,其中10是页面的id,是其他页面的parent_id。

现在我使用mod重写来获得更好的网址。所以上面的网址现在是www.page.com/pagename.php,它被映射到原始网址。 我的页面名称都是独一无二的。

问题:我是否必须为每个网址执行此操作,因为每个网址都需要一个id作为查询字符串,还是有更好的方法将mod重写与动态生成菜单相结合?

1 个答案:

答案 0 :(得分:2)

不,不是每个网址都有,但你需要反过来这样做。

打开重写引擎

RewriteEngine on 

构建一条路径以匹配使用动态'案例'在括号中..

RewriteRule ^/?somefolder/page/([0-9]+)/?$

..使用重写的网址完成规则,使用$ 1表示' case'

/somefolder/pagename.php?id=$1 [L]

使用[L]将所有内容放在一起以表示“最后”字样。规则执行。

RewriteRule ^/?somefolder/page/([0-9]+)/?$ /somefolder/pagename.php?id=$1 [NC,L]

这会将/somefolder/page/12345/重写为/somefolder/pagename.php?id=12345