2009-08-12 13 views
21

.htaccess을 사용하여 폴더 이름을 다시 쓸 수 있는지 궁금합니다. 무슨 뜻입니까?.htaccess를 사용하여 폴더 이름 다시 쓰기

www.site.com/folder1/page.php 

가 지금은 폴더 1 내 웹 공간에 기존 폴더입니다

www.site.com/apple/page.php 

(예를 들어)에 URL을 다시 작성하려면 :

내가 같은 URL을 가지고 있다고 할 수 있습니다.

중요 : "사과"는 단지 이름이 아닌 폴더입니다!

  1. 사용자 유형 www.site.com/folder1/login.php
  2. URL이이 apple 단지를 것을 의미 www.site.com/apple/login.php

에 URL을 리디렉션 다시 쓰고 안 : 여기 좋아

단계 계획에 의해 단계입니다 이름이 아니라 디렉토리. 모든 코드는 folder1에서 가져와야합니다. Acutally 사과 folder1에 대한 별칭이어야합니다. folder1Apple으로 바꿀 수는 없습니다. 그러므로 저는 folder1apple으로 바꿉니다.

+0

사과 폴더가 너무 귀하의 웹 공간에 존재합니까? – Josh

+0

아니, 그냥 이름이야 !! – sanders

+0

죄송합니다. 원하는 일을 더 명확하게해야합니다. 예를 들어 사용자가 입력하는 URL과 실제 파일이 웹 공간에있는 URL과 같은 상황을 단계적으로 알려줄 수 있습니까? – Josh

답변

33

mod_rewrite는 요청 된 URI 만 다시 쓰거나 리디렉션 할 수 있습니다. 따라서 해당 /folder1/…으로 다시 작성하려면 /apple/…을 요청해야합니다.

이 시도 :

RewriteEngine on 
RewriteRule ^apple/(.*) folder1/$1 

이 규칙은 /folder1/…에 내부적으로 URI 경로 /apple/…로 시작하는 모든 요청을 다시 작성합니다. 당신이 실제로 라운드 다른 방법을 찾고으로


편집 :이 규칙은 위의 다른 규칙과 함께 작동하도록 설계되었습니다

RewriteCond %{THE_REQUEST} ^GET\ /folder1/ 
RewriteRule ^folder1/(.*) /apple/$1 [L,R=301] 

. /folder1/…의 요청은 외부로 /apple/…으로 리디렉션되고 /apple/…의 요청은 /folder1/…으로 내부적으로 다시 작성됩니다.

+0

아, 검보 나는 네가 옳다고 생각한다. 원래의 포스터가 의미하는 바를 오해했습니다. +1 – zombat

+0

@ zombat : 항상 그렇듯이) – Gumbo

+0

http://site.com/folder1/login.php에서 시도했지만 http://site.com/apple/login.php에 다시 작성하지 않았습니다. – sanders

5

시도 :

당신이 URL에 표시 할 폴더가 문장의 첫 부분에
RewriteRule ^/apple(.*)?$ /folder1$1 [NC] 

-이 그것에 대해 일치하는 것이며, 두 번째 부분은 기존에 '다시 쓰는'무엇인가 폴더. [NC] 플래그는 대/소문자 차이를 무시한다는 의미입니다. 예를 들어 Apple /은 앞으로 전달할 것입니다.http://www.sitepoint.com/article/guide-url-rewriting/

당신이 여기에서 다운로드 할 수있는 창을위한 좋은 테스트 유틸리티도있다 :

는 튜토리얼 여기를 참조하십시오 http://www.helicontech.com/download/rxtest.zip 그냥 도메인 이름을 떠날 필요가 테스터를 위해주의해야 할이 - 그래서

RewriteRule ^/folder1(.*)?$ /apple$1 [R] 
,369 : 테스트는

이 시도 폴더 1 /에서/사과로 리디렉션 /folder1/login.php에 대한 것

그냥 htaccess로 파일에 위의 결합 재 작성 후 리디렉션합니다 :

RewriteRule ^/folder1(.*)?$ /apple$1 [R] 
RewriteRule ^/apple(.*)?$ /folder1$1 [NC] 
+0

도와 줘서 고마워.하지만 이걸 시험해 보면 : site.com/folder1/login.php와 함께 시도했지만 site.com/apple/login.php에 다시 쓰지 않는다. 마하가 아닌 패턴을 얻는다. – sanders

+0

@Josh : 귀하의 편집 RewriteRule ^/folder1 (. *)? $/apple1 $ 1 [R]은 (는) eiter를 작동하지 않습니다. – sanders

+0

리디렉션 속도가 느 립니 까? 리디렉션이 발생하면 비 리디렉션 버전과 비교합니까? – Miguel

관련 문제