2012-06-19 3 views
0

url에서 일부 매개 변수를 가져 오기 위해 정규 표현식을 설정하려고합니다. 여기에 하나의 URL의 예는 다음과 같습니다.htaccess 경로 정규 형식을 사용하는 경우 Yii의 정규 표현식

mydomain.com/files/images/versions/large/uploadedGal/1-36.png 

나는이 large36에서 두 개의 매개 변수를 얻을이 같은 URL을 확인해야합니다 :

mydomain.com/index.php?r=image/default/create&id=36&version=large 

이것은 htaccess로에서 내 정규 표현식입니다 : ... 내가 문제입니다 알아낼 수 없습니다 작동하지 않습니다

Options -Indexes 

<IfModule mod_rewrite.c> 

RewriteEngine on 
RewriteBase/

# If the requested file or directory does not exist... 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

# ...and if the source URL points to an image, we redirect to the create image URL. 
RewriteRule versions/([^/]+)/[^\-\d]*\-?(\d+)\.(gif|jpg|png)$ index.php?r=image/default/create&id=$2&version=$1 [L,R,QSA] 

</IfModule> 

, 나는 그것이 매개 변수를 작성하지 않고 생각 나는 오류 404 찾을 수 없음을 얻는다. urlFormat을 경로 BTW로 사용하고 있습니다.

답변

1

음 ... 패턴이 잘못되었거나 나쁘다. URL

files/images/versions/large/uploadedGal/1-36.png 

귀하의 예를 고려하고 어떻게 필요는

index.php?r=image/default/create&id=36&version=large 

확실히 작동합니다 (이 하나를 시도

다시 작성/변환 할 수 있지만, 사용자가 제공 한 이후로 당신은 다른 URL 유형을 조정해야 할 수 있습니다 단지 1 URL 예) :
versions/([^/]+)/[^\-\d]*(?:\d+\-)?(\d+)\.(gif|jpg|png)$ 

또는 정말 다른 가능한 URL을에 따라 다르지만 가장 가능성이 당신이) 처음에 원했던 것입니다 (이 같은

versions/([^/]+)/[^\-]*\-?(\d+)\.(gif|jpg|png)$ 

현재 패턴은이 부분 files/images/versions/large/uploadedGal/까지 일치합니다.