2017-03-07 1 views
0

.htaccess와 관련하여 다른 해결책이없는 것 같습니다. http://example.com/staging/테스트/http://example.com/staging/에 : 당신이 복사/붙여 넣기가 URL 예를 들어htaccess 하위 디렉토리 (폴더)를 동일한 하위 디렉토리의 단일 페이지로 리디렉션합니다.

아래에 표시 할 때 무엇을 달성하려고하는 것은 그 같은 디렉토리 내의 특정 HTML 문서에 하위 디렉토리에서 리디렉션하는 것입니다 테스트/page.html

내 (거의) 작업 방법 :

Options -Indexes -MultiViews 
RewriteEngine on 

RewriteRule ^test/(.*)$ test/page.html [L] 

이 코드의 문제는 기본적으로 올바른 page.html으로 리디렉션하지만 page.html의 링크를 클릭하려는 경우 하위 디렉토리 내의 특정 링크로 이동하는 대신 page.html로 다시 리디렉션된다는 것입니다/테스트 /의이 /test/page-2.html

중요 가정 해 봅시다 :이 리디렉션은 하위 디렉토리 "준비"를 영향을해야한다. 루트를 포함한 다른 모든 하위 디렉토리는 영향을받지 않습니다.

기타 정보 : 이 코드는 디렉토리에 대한 .html 중에서 확장을 제거하는 내 htaccess로 파일에도

RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteRule ^(.*)$ $1.html [L] 

디렉토리 "준비"를 "준비"가 어떤 CMS에 연결되지 않고, .html 파일만으로 구성됩니다. 공유 호스팅 환경 (Hostgator/cPanel)을 사용 중입니다.

감사합니다.

답변

1

아래 규칙을 사용하면 L 플래그 만 사용하지만 언급 한대로 리디렉션을 위해 수정합니다.

Options -Indexes -MultiViews 
RewriteEngine on 

RewriteRule ^test/$ /staging/test/page.html [R=301,L] 
+0

불행히도, 이것은 404 페이지를 제공합니다. – Alex

+0

당신은 어디에서 규칙을 사용하고 있습니까! –

+0

하위 디렉토리 "test"에있는 .htaccess 파일에서 규칙을 사용하고 있습니다. 루트에 다른 .htaccess가 있습니다. 그러나 서브 디렉토리 "test"는 루트와 완전히 독립적이어야합니다. – Alex

0

방향키 만 리디렉션하려고하지만 파일은 리디렉션하지 않습니다. 규칙의 패턴은 모든 파일을 포함하여 test/ 디렉토리와 .*이라는 항목이 뒤 따르는 것을 나타냅니다. 혼자 디렉토리를 일치 시키려면, 패턴 대신 절대 경로의

RewriteRule ^test/$ /staging/test/page.html [R,L] 

anchor

, 당신은 상대 경로를 유지하고 추가 할 수 있습니다 문자열의 끝하여 수행됩니다 test에서

를 중지해야합니다 RewriteBase 지시

RewriteBase /staging 
RewriteRule ^test/$ test/page.html [R,L] 

요하는 경우 u 만 다시 쓰고 싶다면 R 플래그를 사용하지 마십시오.

+0

그러면 404가 없습니다. "test"디렉토리에 index.html이 없기 때문에이 문제가 발생한다고 가정합니다. – Alex

+0

다른 주석을 검토 한 결과, .htaccess 파일은'test' 하위 디렉토리에 있습니까? –

+0

이 질문에 감사드립니다. .htaccess 파일은 "스테이징"이전의 디렉토리에 있습니다. http://example.com/staging/test (실제로 동일한 설정을 위해 .html 확장자를 숨길 수있는 솔루션을 제공했습니다) – Alex

관련 문제