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


mod rewrite - have nice urls but still build menu dynamically from database

我正在从数据库动态创建我的菜单。我首先向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