2012-01-09 4 views
6

이 경우 부모 디렉토리로 리디렉션하는 방법을 알지 못합니다. rewriteEngine이 켜져있는 .htaccess 파일이있는 루트 디렉토리가 있습니다. 이 디렉토리에는 rootFile.php라는 파일이 있습니다. 또한이 디렉토리에는 다른 ".htaccess"파일이있는 "forum"디렉토리가 있습니다.htaccess RewriteRule이 상위 디렉토리로 리디렉션 중입니까?

"forum.mySite.com/rootFile.php"에 대한 요청이있을 때 "mySite.com/rootFile.php"로 리디렉션해야합니다. 즉, 요청을 부모 디렉토리로 리디렉션해야합니다.

/forum/.htaccess :

RewriteEngine on 

RewriteBase /forum/ 

RewriteRule ^rootFileName     ../rootFile.php   [L] 
\# or so RewriteRule ^rootFileName   /rootFile.php    [L] 
\# or so RewriteRule ^rootFileName   rootFile.php    [L] 

RewriteRule ^sitemap     /forum/map.php    [L] 

는 또한이 하나 시도 :

RewriteEngine on 

RewriteBase /forum/ 

RewriteRule ^sitemap     /forum/map.php    [L] 
... 

나는에 시도

RewriteEngine on 

RewriteBase/

RewriteRule ^rootFileName     ../rootFile.php   [L] 
\# or so RewriteRule ^rootFileName   /rootFile.php    [L] 
\# or so RewriteRule ^rootFileName   rootFile.php    [L] 

RewriteBase /forum/ 

RewriteRule ^sitemap     /forum/map.php    [L] 

을 그리고 항상/포럼/rootFileName까지 리디렉션/forum/rootFile하지만/rootFile에는 절대로 안됩니다.

내 실수는 어디에서 왔습니까?

답변

0

당신이 쓴 :

를 요청이있을 때 "forum.mySite.com/rootFile.php", 나는 그것을 재 에 필요에 내가 필요로하는 의미 "mySite.com/rootFile.php" 부모 디렉토리로 요청을 리디렉션합니다.

는 다음과 같은 의미입니까? :

"mySite.com/forum/rootFile.php"에 대한 요청이있을 때, 나는 부모 디렉토리에 리디렉션 요청해야 의미 "mySite.com/rootFile.php"로 리디렉션 해야합니다. 차례로 의미

... :

"/forum/rootFile.php"에 대한 요청이있을 때, 나는 내가 부모 디렉토리에 리디렉션 요청해야 의미 "/rootFile.php"로 리디렉션 해야합니다. /forum 디렉토리에 .htaccess에서

이 시도 : 당신은 문서 루트 외부에 다시 ​​작성할 수 없습니다

RewriteEngine On 
RewriteRule ^rootFileName(.*) /rootFile.php [QSA,R=301,L] 
7

. 이것은 보안 문제입니다.

당신은 단지 당신은 보안상의 이유로 문서 루트 외부에있는 경로를 다시 작성할 수 없습니다 <?php include('../rootfile.php'); ?>

3

를 포함하는 rootFile.php를 만들 수 있습니다. 사실 이것은 좋은 습관이 아니기 때문에 피해야합니다.

어쨌든 귀하의 질문에 답하기 위해 해결 방법은 문서 루트에 대상/상위 디렉토리를 가리키는 심볼릭 링크를 만드는 것이지만 직접 액세스로부터 보호해야합니다.

예를 들어 보겠습니다. 우리의 문서 루트가 /var/www/project1이라고 가정하고 다음 /var/www/project2/target.php

에 다시 할 것을, 당신은 p2 (예를 들어)라는 이름의 /var/www/project2를 가리키는 /var/www/project1 내부 심볼릭 링크를 생성해야합니다.

<IfModule mod_rewrite.c> 
    RewriteEngine On 

    RewriteCond %{REQUEST_URI} /hello/world 
    RewriteRule ^(.*)$ p2/target.php [QSA,L] # p2 is the symlink name! 
</IfModule> 
+0

필요 world' 경로 '/ 안녕하세요/가리 키도록 않습니다

이것은 당신의 /var/www/project1/.htaccess 파일이어야합니다? – MrIsaacs

관련 문제