2010-01-21 2 views
1

FTR에 대한 페이지를 tp로 리디렉션하기위한 RewriteRule은 규칙을 다시 작성하는 데 매우 심오합니다.두 번째 하위 폴더 변수

각자 자신의 프로젝트가있는 사용자가 많습니다. 바로 지금 우리는 RewriteRules를 설정하여 누군가 mysite.com/username을 타이핑하면 mysite.com/work/user_name.php?u=000에서 사용자 프로필로 이동합니다.

우리는 누군가가 mysite.com/username/project1에 타이핑하면 그 프로젝트로 간다. (우리는 사용자와 아무 것도 할 필요가 없습니다. 단지 프로젝트를 찾을 필요가 있습니다.하지만 사용자 이름은 서고/정신의 목적을 위해 필요합니다.) 나는 이틀 동안이 작업을 수행하려고 노력했습니다. 내가하는 일에 상관없이 500 개의 오류를 얻는 것처럼 보이지는 않습니다. 나는 그것을 알아낼 정도로 재능이 없습니다.

원래 두 번째 변수 ($ 2)가있는 사용자 페이지로 리디렉션하려고했지만 해당 var에 있으면 해당 페이지에 PHP 헤더가 있지만 작동하지 않는 것처럼 보이고 URL이 계속 표시됩니다. mysite.com/work/project_page?i=999 또는 무엇이든간에, 그것은 좋지 않습니다. 여기

는 필자는 사용자

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /work/user_page.php?n=$1 [L,QSA] 

로 리디렉션에 대한 있어요 코드입니다하지만 2 개 바르 (즉, 사용자/프로젝트)이 있다면 다음 작업을 리디렉션 것을 그것을 말할 방법을 알아낼 수없는 것 /project_page.php?n=$2 ...

답변

2

대신 .*의 (/를 제외하고 하나 이상의 임의의 문자) [^/]+ 같은보다 구체적인 패턴을 사용하는 (모든 문자의 임의의 수)가 필요합니다. 이렇게하면 하나 이상의 경로 세그먼트를 구별 할 수 있습니다.

# one path segment 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)$ /work/user_page.php?n=$1 [L,QSA] 
# two path segments 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)/([^/]+)$ /work/user_page.php?n=$1&project=$2 [L,QSA] 
+0

검보, 너는 절대적인 괴물이다! 내가 묻는 것을 끝내기 전에 당신은 질문에 답을 얻는다. – Cyprus106

관련 문제