我正在创建一个简单的CMS,因此页面链接是domain/index.php?page=1
等等(第2页,第3页......),我将内容从数据库中拉出来,其中包含以下行:
$q = "SELECT name, content FROM pages WHERE page_id=$page";
一切正常,但我想改变网址的外观,所以我在.htaccess中使用了以下内容
RewriteRule ^([A-Za-z]+)/?$ index.php?page=$1 [NC,L]
问题是,现在当我点击页面时我更改了url(在这种情况下它是?page = 2),我不会将内容从db中拉出来,我猜是因为MySQL查询无法找到$page
我该如何解决这个问题?
修改
我更新了规则以包含数字字符,但它仍然是相同的。
RewriteRule ^([A-Za-z0-9]+)/?$ index.php?page=$1 [NC,L]
EDIT2:
只是为了重点回家,如果我在重写规则中硬编码page=2
它可以工作,但显然我希望动态发生。在这种情况下,$1
应该成为2
。
答案 0 :(得分:0)
你确定
$q = "SELECT name, content FROM pages WHERE page_id=$page";
直接取自您的代码?它有一些非常严重的问题:
register_globals
。因此$page
实际上应该是$_GET['page']
。mysql_real_escape_string()
参数进入您的查询。我的建议?自己写这些东西毫无意义。而是使用现有的现代CMS或框架。你最终创造的99%的错误和安全漏洞已经被考虑在内了。