2012-11-28 2 views
0

와 매개 변수 나는 내 htaccess로 파일에 다음과 같은 규칙을 가지고 :친화적 인 URL, 슬래시

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]를 번역하면 문제가 해결 될 것이라고 생각했습니다. 그러나 그것은 문제를 만듭니다!

감사합니다,

Atara

+0

첫 번째 사례가 너를 위해 일하지 않니? 왜 두 번째 경우에'% 2F' 문법을 사용하고 싶습니까? – Nelson

+0

product-name에있는 일부 문자가 ascii가 아니기 때문에 rawurlencode를 사용합니다. 그들은 프란가스 강세 또는 히브리어 자일 수 있습니다. – Atara

답변

2

는 당신이 제품 이름의 슬러그의 일종을 만드는 것이 좋습니다 것입니다. 늘어나는만큼 아파치 설정을 알고 URL에서 인코딩 된 슬래시를 사용할 수 있습니다.

이 당신을 도울 수 있습니다
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; 
} 
+0

링크가 문제를 설명하고 해결책을 추가합니다. 내 경우에는 - (str_replace (array ('% 2F', '% 5C'), array ('% 252F', '% 255C'), rawurlencode ($ strTitle))) – Atara

0
난 그냥 이후 슬래시로 다시 %2F를 대체하는 쉽고 실용적인 길을 갈 것

처럼 뭔가를하고 슬러그를 만들 수 있습니다 귀하의 rawurlencode() 전화 번호 :

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