2012-01-09 18 views
6

Nie mogę zrozumieć, w jaki sposób przekierować do katalogu nadrzędnego w tym przypadku: Mam katalog główny z plikiem .htaccess, w którym włączono przepisywanieEngine. W tym katalogu mam plik rootFile.php. Również w tym katalogu mam katalog "forum", z innym plikiem .htaccess.htaccess RewriteRule przekierowanie do katalogu nadrzędnego?

Gdy jest żądanie do "forum.mySite.com/rootFile.php", muszę przekierować go do "mySite.com/rootFile.php", co oznacza, że ​​muszę przekierować żądanie do katalogu nadrzędnego.

/forum/.htaccess:

RewriteEngine on 

RewriteBase /forum/ 

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

Próbowałem:

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] 

próbowała to również jeden:

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] 

I zawsze przekierowanie z/Forum/rootFileName do/forum/rootFile, ale nigdy do/rootFile.

Gdzie jest mój błąd?

Odpowiedz

0

Napisałeś:

Gdy jest żądanie „forum.mySite.com/rootFile.php”, muszę przekierować go do „mySite.com/rootFile.php”, która oznacza, że ​​muszę do przekierować żądanie do katalogu nadrzędnego.

Czy chodziło Ci o:

Gdy jest żądanie "mySite.com/forum/rootFile.php", muszę przekierować go do "mySite.com/rootFile.php" co oznacza, muszę przekierowania wniosku do katalogu nadrzędnego.

... Co z kolei oznacza:

Gdy jest żądanie "/forum/rootFile.php", muszę przekierować go do "/rootFile.php" co oznacza, muszę przekierowania wniosku do katalogu nadrzędnego.

w twojej .htaccess w /forum reż spróbuj tego:

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

nie można przepisać na zewnątrz dokumentu root. To jest kwestia bezpieczeństwa.

Można po prostu stworzyć rootFile.php który zawiera tylko <?php include('../rootfile.php'); ?>

3

Nie można przerobić na ścieżki, które są spoza głównego dokumentu ze względów bezpieczeństwa. W rzeczywistości należy tego unikać, ponieważ nie jest to dobra praktyka.

W każdym razie, aby odpowiedzieć na twoje pytanie, rozwiązaniem może być utworzenie dowiązania symbolicznego w katalogu głównym dokumentu, który wskazuje katalog docelowy/nadrzędny, ale należy chronić go przed bezpośrednim dostępem.

Pozwolę sobie zrobić przykład. Załóżmy, że nasz główny dokument jest /var/www/project1 i że chcesz przerobić na /var/www/project2/target.php

Następnie trzeba utworzyć dowiązania wewnątrz /var/www/project1 wskazujący na /var/www/project2 nazwie (na przykład) p2.

ten powinien być plik /var/www/project1/.htaccess:

<IfModule mod_rewrite.c> 
    RewriteEngine On 

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

skąd ścieżka '/ hello/world' musi wskazywać? – MrIsaacs

Powiązane problemy