2014-09-25 8 views
1

지금이 순간에 나는 $_GET 변수를 유지하면서 index.php로 모든 것이 바뀌도록 예쁜 URL을 다시 작성하는 상황이 있습니다. htaccess는 다음과 같이 표시됩니다.예쁜 URL을 GET 변수로 생성하십시오.

RewriteEngine On 
RewriteRule ^([^/\.]+)/([^/\.]+)/([^/\.]+)/([^/\.]+)?$ index.php?p=$1&projectid=$2&sub=$3&type=$4 
RewriteRule ^([^/\.]+)/([^/\.]+)/([^/\.]+)?$ index.php?p=$1&projectid=$2&sub=$3 
RewriteRule ^([^/\.]+)/([^/\.]+)?$ index.php?p=$1&projectid=$2 
RewriteRule ^([^/\.]+)/?$ index.php?p=$1 

잘 작동합니다. 그러나 나는 다른 방향으로도 일하기를 원한다. 누군가 http://www.example.com/index.php?p=page&projectid=123으로 이동하면 http://www.example.com/page/123으로 리디렉션됩니다.

가능한가요? 그렇다면 어떻게해야합니까? 지금까지 제가 관리해온 것은 리다이렉트 루프를 만드는 것입니다.

RewriteCond %{QUERY_STRING} ^p=([^&]+) 
RewriteRule ^/?index\.php$ http://www.example.com/%1? [L,R=301] 
+0

[참고 : mod \ _rewrite, URL 재 작성 및 "예쁜 링크"설명] (http://stackoverflow.com/questions/20563772/reference-mod-rewrite-url-rewriting-and-pretty-links - 설명) –

+1

기존 라우터 솔루션 (ZF, SF 등)을 조사하십시오. – fejese

+0

@fejese : 내가 읽을 수있는 링크를 알려주시겠습니까? 전에는 들어 본 적이 없어요. –

답변

1

내가 그것을 주위뿐만 아니라 다른 방법으로 작업 할 다음과 같이 관심이있는 사람들을 위해

는 리디렉션 루프가 나는 외모를 만들었습니다. 누군가가 http://www.example.com/index.php?p=page&projectid=123로 이동하는 경우가 http://www.example.com/page/123

로 리디렉션 것 네, 그것은 참으로 가능하지만 당신은 그것에 대해 THE_REQUEST 변수를 사용해야합니다.

RewriteCond %{THE_REQUEST} \s/+index\.php\?p=([^\s&]+)&projectid=([^\s&]+) [NC] 
RewriteRule^/%1/%2? [R=302,L] 

다른 URL에 대해서도 유사한 규칙을 만들 수 있습니다.

관련 문제