2012-01-09 38 views
6

Tôi không thể hiểu cách chuyển hướng đến thư mục mẹ trong trường hợp này: Tôi có thư mục gốc có tệp .htaccess, trong đó rewriteEngine đang bật. Trong thư mục này tôi có một file rootFile.php. Ngoài ra, trong thư mục này tôi có một thư mục "diễn đàn", với một tập tin .htaccess trong đó.htaccess RewriteRule chuyển hướng đến thư mục mẹ?

Khi có yêu cầu "forum.mySite.com/rootFile.php", tôi cần chuyển hướng nó tới "mySite.com/rootFile.php" có nghĩa là tôi cần chuyển hướng yêu cầu tới thư mục chính.

/forum/.htaccess:

RewriteEngine on 

RewriteBase /forum/ 

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

Tôi cố gắng để:

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] 

Cũng cố gắng này một:

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] 

Và nó luôn luôn chuyển hướng từ/forum/rootFileName để/forum/rootFile, nhưng không bao giờ đến/rootFile.

Lỗi của tôi ở đâu?

Trả lời

0

Bạn đã viết:

Khi có yêu cầu "forum.mySite.com/rootFile.php", tôi cần phải chuyển hướng nó vào "mySite.com/rootFile.php" có nghĩa là tôi cần đến yêu cầu chuyển hướng tới thư mục chính.

Ý của bạn là:

Khi có yêu cầu "mySite.com/forum/rootFile.php", tôi cần phải chuyển hướng nó vào "mySite.com/rootFile.php" có nghĩa là tôi cần phải yêu cầu chuyển hướng đến thư mục cha.

... Mà lần lượt có nghĩa là:

Khi có yêu cầu "/forum/rootFile.php", tôi cần phải chuyển hướng nó vào "/rootFile.php" có nghĩa là tôi cần phải yêu cầu chuyển hướng đến thư mục cha.

Trong .htaccess của bạn trong /forum dir thử điều này:

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

Bạn không thể viết lại ra bên ngoài tài liệu gốc. Đây là một điều bảo mật.

Bạn chỉ có thể tạo ra một rootFile.php mà chỉ chứa <?php include('../rootfile.php'); ?>

3

Bạn không thể viết lại để con đường nằm ngoài thư mục gốc tài liệu của bạn vì những lý do an ninh. Trong thực tế, điều này nên tránh vì nó không phải là một thực hành tốt.

Dù sao, để trả lời câu hỏi của bạn, cách giải quyết có thể là tạo liên kết tượng trưng trong gốc tài liệu trỏ đến thư mục đích/thư mục gốc, nhưng bạn nên bảo vệ nó khỏi truy cập trực tiếp.

Hãy để tôi làm ví dụ. Giả sử rằng gốc tài liệu của chúng tôi là /var/www/project1 và rằng bạn muốn viết lại trên /var/www/project2/target.php

Sau đó, bạn phải tạo một liên kết tượng trưng trong /var/www/project1 trỏ đến /var/www/project2 tên (ví dụ) p2.

này cần được /var/www/project1/.htaccess tập tin của bạn:

<IfModule mod_rewrite.c> 
    RewriteEngine On 

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

nơi nào con đường '/ hello/world' cần để trỏ đến? – MrIsaacs

Các vấn đề liên quan