2013-09-05 2 views
0

나는 stackoverflow에서 비슷한 질문을 읽었지만 내 문제에 대한 해결책을 찾지 못했습니다. 내 htaccess로에서 .htaccess - 모두 index.php로 리디렉션하지만 다른 링크로 리디렉션

, 나는이 :

RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule ^(.*)$ index.php?url=$1 [L,QSA] 

내가 한 번 더 리디렉션을 추가해야합니다. 실제 사이트 페이지가 있습니다. domain.com/some_real_page이고, 더 짧은 링크가 필요합니다. domain.com/link. 이것이 어떻게 가능한지?

는 다음을 수행했지만, 그것은 작동하지 않습니다 :

RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule ^(.*)$ index.php?url=$1 [L,QSA] 

RewriteCond %{REQUEST_URI} ^/some_real_page$ 
RewriteRule ^(.*)$ http://www.domain.com/link [R=302,L] 
+1

변경하여 패턴의 순서, 그리고 일반 사람은 마지막 :

최종 결과는 다음과 같아야합니다. –

+0

고맙습니다. 이것이 내가 필요한 것입니다. –

답변

1

여기서 두 가지 문제가있다. 첫째, 일반적인 재 작성 규칙보다 더 구체적인 재 작성 규칙이 필요합니다. 둘째, 특정 다시 쓰기 규칙은 거꾸로 작성됩니다.

RewriteEngine 프로그래밍 규칙은 위에서 설명한대로 프로그래밍 if/else if/else과 비슷합니다. 즉, 포괄적 인 사례 (일명 ^(.*)$)를 목록 맨 아래에 넣으려는 것입니다. 이 전에 모든 규칙은 [L] 속성이 일치 한 후에 추가 처리를 중지해야합니다.

두 번째 부분은 브라우저 링크 http://www.domain.com/link이 실제 파일 http://www.domain.com/some_real_page.php을 가리 키도록하려는 경우입니다. 샘플 코드에서, 당신은 그 반대입니다. 특정 일 처음 그래서,

RewriteEngine on 

RewriteCond %{REQUEST_URI} ^/link$ 
RewriteRule ^(.*)$ some_real_page.php [R=302,L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?url=$1 [L,QSA] 
+0

고마워. 주제를 벗어. 당신은 아파치와 그 설정에 관한 좋은 책을 권할 수 있습니까? –

+0

저는 항상 아파치 설명서 (http://httpd.apache.org/docs/)를 사용했습니다. 매우 철저합니다. 그렇지 않으면 Google을 사용하세요 :) –

+0

문제가 발생했습니다. Ajax는 새로운 RewriteRule 및 RewriteCond를 추가 할 때 작동을 멈춘다. –

관련 문제