我正在从数据库动态创建菜单。我首先在url中附加一个id,我用它来识别数据库中的页面,然后从子页面中获取所有URL等等。
所以我有很多这样的id www.page.com/somefolder/pagename.php?id=10
,其中10是页面的id,是其他页面的parent_id。
现在我使用mod重写来获得更好的网址。所以上面的网址现在是www.page.com/pagename.php
,它被映射到原始网址。
我的页面名称都是独一无二的。
问题:我是否必须为每个网址执行此操作,因为每个网址都需要一个id作为查询字符串,还是有更好的方法将mod重写与动态生成菜单相结合?
答案 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