2014-02-05 3 views
0
는 무슨 코드에서하는 것을 시도하고있다

: 모든 방문자가 htaccess로 도메인/문서 그를 전송합니다 http://domain.com/article.php?id=44 같은 HREF 클릭/44무한 루프 동안

다음 다른 재 작성 규칙에 파일에서 요청 된 ID의 내용을 가져 오는 것입니다.

RewriteCond %{QUERY_STRING} ^id=([^&]*) 
RewriteRule ^article\.php$ http://alarabe.org/article/%1? 
RewriteRule ^article/([a-z0-9\-]+)$ /article.php?id=$1 [L] 

답변

0

이 규칙은 정확하지 않으며 확실히 루핑을 유발할 것입니다. 브라우저에서 Apache가받은 원래 요청을 나타내는 변수 THE_REQUEST을 사용해야합니다. THE_REQUEST 다음 쿼리 문자열을 검사 모두 URL 및 쿼리 문자열이 일치하는 경우 리디렉션 조건을 통해 어떤 이점을 제공합니다 왜 규칙이 "옳지 않아"왜

RewriteCond %{THE_REQUEST} \s/+article\.php\?id=([^\s&]+) [NC] 
RewriteRule^http://alarabe.org/article/%1? [R=302,L] 

RewriteRule ^article/([a-z0-9\-]+)$ /article.php?id=$1 [L] 
+0

당신은 자격이 수 및 설명 :

대신 시도 조항들? 문제가 아니라 [R] 플래그가 없습니까? – arco444

+1

아니요. 'THE_REQUEST' 변수가 일부 규칙을 적용한 후에 값을 변경하지 않기 때문입니다. QUERY_STRING 및 REQUEST_URI 값이 다시 쓰기 루프에서 업데이트되는 위치. – anubhava

+0

이해하기 쉽고 알 수있게되어 명확하게 설명해 주셔서 감사합니다. – arco444