2011-09-30 5 views
1

여기 내 htaccess로이다 : test.com/main/.htaccess
에서mod_rewrite를, 변수는 하위 서브 디렉토리 재 작성, htaccess로에 표시 받기

Options +FollowSymLinks 
Options +Indexes 
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ([^/]+/.*) index.php?dir=%{REQUEST_URI} 

htaccess로 생활 나는 시험에 액세스 할 수 있습니다가. co.kr/main/and test.com/index.php fine
test.com/main/directory는 test.com/main/index.php?dir=/main/directory/로 재 작성됩니다. test.com/main/directory URL 표시 줄에 그대로 있습니다. 이것은 좋다.

하위 하위 디렉터리에 액세스하려고하면 문제가 발생합니다. test.com/main/foler1/folder2에 액세스하면 index.php? dir =/main/folder1/folder2 /로 다시 작성됩니다. 이것 역시 좋지만 test/main /folder1/folder2/?dir=/main/folder1/folder2/는 URL 표시 줄에 test.com/main/folder1/folder2를 유지하는 대신 검색 주소창에 표시됩니다. 이게 문제 야.

main의 직계 자식뿐만 아니라 모든 하위 디렉토리가 URL 바에서 디렉토리를 유지하는 동안 다시 쓰기를 원합니다. 직접적인 아이들은이 일을 잘하지만, get 변수가 나타나는 방식으로 그 밑에있는 모든 디렉토리를 다시 작성합니다.

이 재 작성의 목적은 index.php 파일을 새로 생성 된 모든 폴더에 복사 할 필요가 없기 때문에 .htaccess를 각 폴더에 복사하여 목적을 달성하지 못하게합니다. 당신은 아마 RewriteRule ([^/]+/.*) index.php?dir=%{REQUEST_URI} [QSA,L] 원하는

답변

0

mootinator의 솔루션을 테스트하는 동안 찾은 솔루션을 추가하겠습니다. 대신
test.com/main/foler1/folder2

링크
에 test.com/main/foler1/folder2/에 링크의

(슬래시를 포함!)

리디렉션이 성공적 것
의 index.php? DIR =/주/폴더 1/Folder2 폴더/

동안
테스트로 리디렉션.co.kr/main/foler1/folder2/
은 URL 표시 줄에 있습니다.

다소 해킹 된 솔루션이지만 정상적으로 작동합니다.

+0

존재하는 디렉토리에서 다시 쓰는 이유는 무엇입니까? 일반적인 연습은 존재하지 않는 모든 디렉토리 나 파일을 다시 작성한 다음 코드가 URL이 유효한지 여부를 알아내는 것입니다. –

+0

나는이 문제를 해결하기 위해 내 대답을 업데이트했다. 아무 래도 이런 식으로 일하는 좋은 이유가 있다고 가정하면 = –

0

합니다 (L 규칙이 성공하면 더 규칙을 처리에서 모드 재 작성을 방지) QSA는 전달되었을 수있는 쿼리 문자열을 추가

업데이트 :.

문제입니다 서버가 슬래시가없는 URL (슬래시가없는 URL)을 슬래시 URL로 다시 쓰고 재 작성 규칙을 포함시켜야합니다.

RewriteRule ([^/]+/.*/$) index.php?dir=%{REQUEST_URI} [QSA,L] 

이 방법은 두 개의 별도의 단계로 재 작성 작업을 수행합니다 :

  1. 가 눈에 띄게 슬래시를 추가 URL이 슬래시 예로 끝나는 때 주변의 방법은 공정에 규칙이 될 것입니다. 대신

을되는 index.php 규칙을 사용하여

  • 재 작성 :

    1. 슬래시를 추가하고 눈에 띄게되는 index.php 재 작성.
  • +0

    글쎄, 내가 전에 눈치 채지 못한 것을 눈치 챘지만,이 해결책은 효과가 없었다. 모든 하위 하위 또는 하위 하위 디렉터리를로드 할 때 끝에 슬래시를 포함하면 다시 쓰기가 항상 올바르게 수행되지만 get 변수가 표시되지 않습니다. 나는이 해결책을 해결할 수 있다고 생각한다. 필자는 자동으로 생성 된 링크를 확인하여 경로 끝의 슬래시와 연결되는지 확인해야합니다. 도움을 주셔서 감사합니다! –