0

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 は機能しません

ヒントは何ですか?/ を [rawurlencode を使用して] %2F に変換すると問題が解決すると思いました。しかし、それは問題を引き起こします!

ありがとう、

あたら

4

2 に答える 2

2

製品名のある種のスラッグを作成することをお勧めします。私が知る限り、URLでエンコードされたスラッシュを使用できるようにするapacheの設定です。

これはあなたを助けるかもしれません:
http ://www.jampmark.com/web-scripting/5-solutions-to-url-encoded-slashes-problem-in-apache.html

このようなことをするスラッグを簡単に作成することもできます

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

    return $result;
}
于 2012-11-28T08:54:47.613 に答える
0

次のように、呼び出しの%2F後にスラッシュに戻すだけの簡単で実用的な方法を使用します。rawurlencode()

$nameencoded = rawurlencode($product_name);
$nameencoded = str_replace('%2F', '/', $nameencoded);
于 2012-11-28T09:09:19.217 に答える