您可以获得“漂亮”的网址,但不是通过最漂亮的方式..
您可以将您的网址设置为:
/Products/Search/Type/{producttype}/Name_{name}/Address_{address}
然后是mod_rewrite规则,例如:
RewriteRule ^Products/Search/Type/([a-z]+)(.*)?$ product_lookup.php?type=$1¶ms=$2 [NC,L]
这将在您的product_lookup
文件中为您提供 2 个参数:
$type = {producttype}
$params = "/Name_{name}/Address_{address}"
然后,您可以在product_lookup.php
文件中实现一些逻辑以循环$params
,将其拆分为“/”,根据“_”之前的任何内容对其进行标记,然后在搜索中正常使用结果参数,例如
// Split request params first on /, then figure out key->val pairs
$query_parts = explode("/", $params);
foreach($params as $param)
{
$param_parts = explode("_", $param);
// Build up associative array of params
$query[$param_parts[0]] = $param_parts[1];
}
// $query should now contain the search parameters in an assoc. array, e.g.
// $query['Name'] = {name};
将参数设置为“漂亮”的 url 而不是 POST 可以让用户更轻松地为特定搜索添加书签。
这方面的一个例子是
http://www.property.ie/property-for-sale/dublin/ashington/price_200000-550000/beds_1/
- 用户选择的参数由“_”(价格范围和床位)表示,可以在内部翻译成您需要的任何参数格式,同时保持一个很好的可读 url。
上面的代码是一个没有错误检查(输入中的恶意分隔符等)的简单示例,但应该让您知道从哪里开始。
它还假设了一个 LAMP 堆栈(用于 mod_rewrite 和 PHP 的 Apache),但可以使用 asp.net 和IIS mod_rewrite 等效的.