我创建了一个运行良好的重写映射:
.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 页面?
我创建了一个运行良好的重写映射:
.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 页面?
当地图中的键和值之间没有对应关系时,您可以指定默认值。
${mymap:$1|default_value}
然后你可以使用这个默认值404
通过测试 query_string 键来触发 index.php 页面中的调用page
。
默认情况下,default_value
是空字符串。这可以解释为什么您的 index.php 页面使用空参数进行 SQL 查询时会出现 SQL 错误。
我不能强调您不要只是将页面 ID 打到 SQL 查询的末尾而不先对其进行清理是多么重要。
无论如何,也许用 try/catch 包围您的 SQL 查询,并在捕获 SQL 异常的情况下发送 404 标头。