2012-01-09 100 views
6

我無法理解在這種情況下如何重定向到父目錄: 我有一個帶有.htaccess文件的根目錄,其中rewriteEngine處於打開狀態。在這個目錄中我有一個文件rootFile.php。 此外,在這個目錄中我有一個目錄「論壇」,其中有另一個.htaccess文件。htaccess RewriteRule重定向到父目錄?

當有「forum.mySite.com/rootFile.php」請求時,我需要將其重定向到「mySite.com/rootFile.php」,這意味着我需要將請求重定向到父目錄。

/forum/.htaccess:

RewriteEngine on 

RewriteBase /forum/ 

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

我想:

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/

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"這意味着我需要 重定向請求父目錄。

在你.htaccess/forum目錄試試這個:

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

改寫然後,你必須創建內部/var/www/project1一個符號鏈接指向/var/www/project2命名(例如)p2

這應該是你/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

哪裏路徑'/你好/ world'需要指向? – MrIsaacs 2016-10-28 16:34:23