2010-08-02 3 views
1

1 ~ 5 개의 매개 변수가있는 URL을 처리해야하는 일련의 다시 쓰기 규칙이 있습니다. 따라서 내 URL은 www.site.com/topic1/page1 또는 www.site.com/topic1/sub1/page1과 같습니다. 여기 htaccess URL 다시 쓰기 규칙에 문제가 있습니다. 결과 문자열에 쿼리 문자열이 추가되고 있습니다.

이 예제에서는 내 규칙이 있습니다 :

RewriteRule ^([^/.]+)/?$ /staticpages/process-selection.php?param1=$1 [E=rwdone:yes,L] 
RewriteRule ^([^/.]+)/([^/.]+)/?$ /staticpages/process-selection.php?param1=$1&param2=$2 [E=rwdone:yes,L] 
RewriteRule ^([^/.]+)/([^/.]+)/([^/]+)/?$ /staticpages/process-selection.php?param1=$1&param2=$2&param3=$3 [E=rwdone:yes,L] 
RewriteRule ^([^/.]+)/([^/.]+)/([^/]+)/([^/]+)/?$ /staticpages/process-selection.php?param1=$1&param2=$2&param3=$3&param4=$4 [E=rwdone:yes,L] 
RewriteRule ^([^/.]+)/([^/.]+)/([^/]+)/([^/]+)/([^/]+)/?$ /staticpages/process-selection.php?param1=$1&param2=$2&param3=$3&param4=$4&param5=$5 [E=rwdone:yes,L] 

이 문제를 복잡하게하기 위해, 나는이 새로운 URL 중 하나에 이전 URL에서 리디렉션 (301)가있을 수 있습니다. 따라서 "/ topic1/page1/oldpage"는 먼저 "/ topic1/page1/newpage"로 리다이렉트 될 수 있습니다. 어떤 이유로 다시 쓰기가 발생하면, 브라우저에 표시 URL이 올바른 URL을 가지고 있지만, 들어

이 같은 URL에 추가 이전 변수 : /항목 1/PAGE1/NEWPAGE PARAM1 = PAGE1 & param2 = oldpage

이 상황을 피할 수있는 방법이 있는지 궁금합니다. 도대체 내가 여기서 잘못하고있다.

답변

0

mod_alias 나중에 다음 mod_rewrite을 작동하고, [L] 플래그가 mod_rewrite 규칙에 대해서만 유효하지 mod_alias (즉, 그 규칙은 여전히 ​​원래의 URL에 적용 할 수 있지만, 분명히 새로운 쿼리 문자열에 이상하게 것이다). mod_alias에서 이미 다시 작성된 URL을 볼 수있게하려면 [PT] 플래그를 사용하거나 mod_rewrite으로 모든 다시 쓰기/리디렉션을 시도하십시오.

+0

입력 해 주셔서 대단히 감사드립니다. 리디렉션 301 코드를 RewriteRule^url [R = 301, L]로 변경하여이 문제를 해결할 수있었습니다. 마침내 이상한 매개 변수가 내 브라우저 URL에 추가되지 않습니다. – Waylien

관련 문제