Если карта перезаписи не существует, до 404 - PullRequest
1 голос
/ 22 июня 2011

Я создал карту перезаписи, которая работает хорошо:

.htaccess

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

mymap.txt

home 1
about 2
contact 3

Так что www.myurl / home работает нормально, но www.myurl / nonexistant_page не существует в mymap.txt, поэтому я получаю ошибку SQL. Есть ли способ проверить, существует ли карта и не попала ли она на страницу 404?

Ответы [ 2 ]

3 голосов
/ 22 июня 2011

Вы можете указать значение по умолчанию, если нет соответствия между ключом и значениями на вашей карте.

${mymap:$1|default_value}

Затем вы можете использовать это значение по умолчанию для запуска вызова 404 на странице index.php, протестировав ключ query_string с именем page.

По умолчанию default_value является пустой строкой. Это может объяснить, почему вы получаете ошибку SQL, если ваша страница index.php делает запрос SQL с пустым аргументом.

1 голос
/ 22 июня 2011

Не могу не подчеркнуть, насколько важно, чтобы вы не просто добавляли идентификатор страницы в конец вашего SQL-запроса, не предварительно очистив его.

В любом случае, возможно, окружите ваш SQL-запрос попыткой/ catch и отправить заголовок 404 в случае, если перехвачено исключение SQL.

...