【发布时间】:2016-09-16 09:22:13
【问题描述】:
我有问题。我正在使用 mod_rewrite 重命名我的 URLS
一切正常,直到我重新格式化我的 URL,以便空格包含 - 而不是 %20。
site.com/page.php?country=abc®ion=d e f&city=gh i
site.com/abc/d-e-f/gh-i/
目前我正在这样做
if (isset($_GET['country'])) {$country = str_replace('-', ' ', $_GET['country']);}
if (isset($_GET['city'])) {$city = str_replace('-', ' ', $_GET['city']);}
if (isset($_GET['region'])) {$region = str_replace('-', ' ', $_GET['region']);}
然后我在查询数据库时恢复正常,例如:
str_replace(' ', '-', $_GET['city'])
但是,这产生了一个问题,因为一些城市同时使用空格和 -。 圣安德烈留尼汪岛。
最初我考虑运行原始 SQL 查询,如果返回 0 个结果,则在再次运行查询之前用 - 替换空格。然而,这只会在城市包含 ONLY - 和 0 空间时解决它,例如 Saint-andre。
$sql2 = "SELECT `name`, FROM `list` WHERE country = '$regionCode[0]' AND admin1 = '$regionCode[1]' AND admin2 = '$regionCode[2]' AND city = '$city' ORDER BY 'moddate'";
处理此问题的最佳方法是什么?我应该改用双破折号并以不同的方式处理吗? EG Saint--andre-reunion-island 还是有更好的方法?
谢谢
【问题讨论】:
-
通常,在 URL 中包含人类可读 slug 的网站也包含整数 ID。在这种风格中,您完全忽略了服务器端的 slug,只根据 id 进行查询;这可以帮助您解决重复城市名称的任何问题。
-
谢谢 Sam,是的,这是另一种选择,我希望避免使用 ID 字段
标签: php mysql .htaccess mod-rewrite