我创建了一个运行良好的重写地图:
的.htaccess
RewriteRule ^([^/\.]+)/?$ index.php?page=${mymap:$1} [L]
mymap.txt
home 1
about 2
contact 3
所以www.myurl / home工作正常,但mymap.txt中不存在www.myurl / nonexistant_page,所以我得到一个SQL错误。有没有办法检查地图是否存在,如果没有到404页面?
答案 0 :(得分:3)
当地图中的键和值之间没有对应关系时,您可以指定默认值。
${mymap:$1|default_value}
然后,您可以使用此默认值通过测试名为404
的query_string键来触发index.php页面中的page
调用。
默认情况下,default_value
为空字符串。这可以解释为什么如果index.php页面使用空参数进行SQL查询,则会出现SQL错误。
答案 1 :(得分:1)
我不能强调,不要先将页面ID打到SQL查询的末尾而不先清理它,这是多么重要。
无论如何,可能用try / catch包围你的SQL查询,并在捕获SQL异常的情况下发送404标头。