我正在从数据库动态创建我的菜单。我首先向url添加id,用于识别数据库中的页面,然后从子页面获取所有url,等等。
所以我有很多像www.page.com/somefolder/pagename.php?id=10
这样的id,其中10是页面的id,是许多其他页面的parent_id。
现在我使用mod重写来获得更好的url。因此,上面的url现在是www.page.com/pagename.php
,它被映射到原始url。我的页面名都是唯一的
问题:我必须这样做每一个url,因为每个url需要一个id作为查询字符串,或者有一个更好的方法来结合mod重写与动态生成一个菜单?
不,不是对每个URL都这样做,但你需要反过来做。
打开重写引擎
RewriteEngine on
用一个动态的'case'在括号中创建一个匹配的路径。
RewriteRule ^/?somefolder/page/([0-9]+)/?$
. .用重写的URL完成规则,使用$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