1

我创建了一个运行良好的重写映射:

.htaccess

RewriteRule ^([^/\.]+)/?$ index.php?page=${mymap:$1} [L]

我的地图.txt

home 1
about 2
contact 3

所以 www.myurl/home 工作正常,但是 mymap.txt 中不存在 www.myurl/nonexistant_page 所以我得到一个 SQL 错误。有没有办法检查地图是否存在,如果没有到 404 页面?

4

2 回答 2

3

当地图中的键和值之间没有对应关系时,您可以指定默认值。

${mymap:$1|default_value}

然后你可以使用这个默认值404通过测试 query_string 键来触发 index.php 页面中的调用page

默认情况下,default_value是空字符串。这可以解释为什么您的 index.php 页面使用空参数进行 SQL 查询时会出现 SQL 错误。

于 2011-06-22T09:11:30.437 回答
1

我不能强调您不要只是将页面 ID 打到 SQL 查询的末尾而不先对其进行清理是多么重要。

无论如何,也许用 try/catch 包围您的 SQL 查询,并在捕获 SQL 异常的情况下发送 404 标头。

于 2011-06-22T00:24:11.370 回答