문제

내가 찾는 url 을 다시 쓰도록 여러 하위 문자열.하나는 부분이 요청 하위 디렉터리로는 동안,다른 요청은 정상적으로 쿼리 문자열을 매개 변수입니다.

예를 들어,내가 다시 작성하는 url 에서

http://www.mysite.com/mark/friends?page=2

하기

http://www.mysite.com/friends.php?user=mark&page=2

나는 이러한 목표를 달성 할 수을 제외의 질문에 표시 문자입니다.여기에 내 재작성 규칙:

...
RewriteEngine On
RewriteBase /
RewriteRule ^([A-Za-z0-9-_]+)/friends[?]?([^/\.]+)?$ friends.php?user=$1&$2 [L]

변경하는 경우 이 질문을 표시하여 다른 문자들은 그것은 위대한 작동합니다.인 문제는'?'문자가 잘못 해석의 시작으로 새로운 query string.

내가 전달해야에서 모든 매개변수 이후에 나타나는 사용자 친구 같은 것입니다.나는이를 어떻게?

도움이 되었습니까?

해결책

당신은 그것을 사용해야합니다 [QSA] 쿼리 문자열을 다시 작성하는 대신 플래그. [QSA] 쿼리 문자열을 다시 작성한 URL로 전달합니다.

따라서 규칙은 다음과 같습니다.

...
RewriteEngine On
RewriteBase /
RewriteRule ^([A-Za-z0-9-_]+)/friends/? friends.php?user=$1 [QSA,L]

귀하의 경우는 매우 유사합니다 mod_rewrite cookbook에서 QSA 플래그 사용에 대한 예제.

다른 팁

쿼리하지 않은 부분의 URL 경로에 따라서 처리할 수 없으로 RewriteRule 지시어.이 할 수 있습니다진 RewriteCond 지시어(참조하십시오 %{QUERY_STRING}).

드로 자작나 이미 말 기에 충분 일정 QSA 플래그 자동으로 원래 요청한 쿼리를 추가하는 새로운 URL.

다시 쓰기 플래그 QSA를 사용하는 것 외에도 다음과 같이 query_string 환경 변수를 사용할 수도 있습니다.

RewriteEngine On
RewriteBase /
RewriteRule ^([A-Za-z0-9-_]+)/friends$ /friends.php?user=$1&%{QUERY_STRING}

그리고 문제의 URL

http://www.example.com/mark/friends?page=2

(지정된대로)로 다시 작성됩니다.

http://www.example.com/friends.php?user=mark&page=2
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top