友好网址,带斜杠的参数



我的htaccess文件中有以下规则:

RewriteRule ^product/(.*)/(.*)/([0-9]+)$   product_page.php?prod=$1&code=$3&lang=$2 [QSA]

当我的产品名称中有/斜杠/时 -

http://www.mySite/product/namePart1/namePart2/_lang2/722工程

http://www.mySite/product/namePart1%2FnamePart2/_lang2/722不起作用

任何提示为什么?我认为将/转换为 %2F [使用 rawurlencode] 将解决问题。但它产生了问题!

谢谢

阿塔拉

我建议您创建产品名称的某种 slug。据我所知,这是 apache 中的一个设置,允许您在 url 中使用编码的斜杠。

这可能有助于您:
http://www.jampmark.com/web-scripting/5-solutions-to-url-encoded-slashes-problem-in-apache.html

您也可以轻松创建执行类似操作的 slug

function slug($phrase, $maxLength = 255) {
    $result = strtolower($phrase);
    $result = preg_replace("/[^a-z0-9s-]/", "", $result);
    $result = trim(preg_replace("/[s-]+/", " ", $result));
    $result = trim(substr($result, 0, $maxLength));
    $result = preg_replace("/s/", "-", $result);
    return $result;
}

我会采取简单实用的方法,在rawurlencode()调用后将%2F替换回斜杠,如下所示:

$nameencoded = rawurlencode($product_name);
$nameencoded = str_replace('%2F', '/', $nameencoded);

相关内容

  • 没有找到相关文章

最新更新