如果不存在重写映射则到404

时间:2011-06-21 23:22:21

标签: apache mod-rewrite rewritemap

我创建了一个运行良好的重写地图:

的.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页面?

2 个答案:

答案 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标头。