这是生成友好URL的正确做法吗?

时间:2013-05-28 06:46:05

标签: php mysql ajax friendly-url seo

我正在生成AJAX调用的url,就像我解释here一样。 (请看一下这篇文章,了解实际情况是必要的。)

有些网址有特殊字符,所以会像:

http://myweb.com/ni%C3%B1o/pull%26bear/jacket%20shirt%20pants%20underwear%20hat/23

我想创建友好的URL删除一些字符并限制第三个参数最多只有三个字。结果将是这样的:

http://myweb.com/nino/pullbear/jacket-shirt-pants/23

所以php将能够知道我传递的参数我在我的数据库中为每个 VARCHAR 添加了一个新的colum,其中包含了漂亮的url转换。我解释一下这样的事情:

ID  SEX   SEX_PRETTY  BAND       BRAND_PRETTY  DESCRIPTION                       DESCRIPTION_PRETTY   AGE
1   NIÑO  NINO        PULL&BEAR  PULLBEAR      JACKET SHIRT PANTS UNDERWEAR HAT  JACKET-SHIRT-PANTS   10
2   NIÑA  NINA        ZARA       ZARA          JEANS BIKINI DRESS SWEATER        JEANS-BIKINI-DRESS   13

AJAX调用php,在php中我在数据库中执行 very colum to normal colum 转换。

我认为这是我想要的唯一方法,不是吗?任何帮助或建议将不胜感激,如果您需要更多信息,请告诉我,我将编辑该帖子。

1 个答案:

答案 0 :(得分:2)

你在做什么是正确的。 URL中的值只是参数,因此您可以使用它们从数据库中选择行。当您解析网址http://myweb.com/nino/pullbear/jacket-shirt-pants/23时,它会返回类似

的内容
<?
$sex = 'nino';
$brand = 'pullbear';
$description = 'jacket-shirt-pants';
$age = '23';
?>

然后,您可以使用该信息从数据库中选择一些内容。为简单起见,我将查询查询,但请确保您执行了一些validation or use parameterized queries

<?
//WARNING: POSSIBLE UNSAFE EXAMPLE, DONT USE DIRECTLY IN PRODUCTION

$query = "SELECT * FROM Table WHERE SEX_PRETTY='$sex' AND BRAND_PRETTY='$brand' AND DESCRIPTION_PRETTY='$description' AND AGE='$age'";

//now in your results you can use the `SEX`, `BRAND` and `DESCRIPION` columns to show information
?>

请注意,如果您想要唯一标识单个产品,最好在UNIQUE INDEXSEX_PRETTYBRAND_PRETTY的组合列上创建DESCRIPTION_PRETTYAGE

此外,由于您正在讨论使用JSON,请记住并非所有特殊字符都被允许,因此您可能需要在输出中对它们进行编码。查看json-character-encoding