2012-12-22 118 views
1

我想將一個文件夾的所有無文件和無目錄重定向到另一個文件夾。 .htacess應該位於root(http://site.com)上。htacess - 將一個文件夾重定向到另一個內部

例子:

http://site.com/admin/core/file.php - Does not exists. So, redirect (internaly) to http://site.com/adminhide/core/file.php 

http://site.com/admin/index.php - Exists. So, don't do anything.. 

我試圖創建的代碼,但我有一個500內部服務器錯誤:

Options +FollowSymLinks

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !^/admin/$ 
RewriteRule (.*)$ /adminhide/$1 [L] 

請幫助我, 謝謝您的時間:)

回答

0

你說:

http://site.com/admin/index.php - Exists. So, don't do anything.. 

這使在admin路徑中存在的文件,但在同一時間你的規則將拒絕該路徑下的所有文件:

RewriteCond %{REQUEST_URI} !^/admin/$` 

在另一方面,no-files and no-directories真的是含糊不清,留下任何與工作,但它似乎指的是non-existent文件。如果是這樣,映射所有404錯誤到http://site.com/adminhide/core/file.php將完成你想要的。

試試這個,而不是你的問題設置的重寫規則:

ErrorDocument 404 adminhide/core/file.php 

修訂

你想要什麼在PHP中做得更好。

由於404錯誤,必須先檢測,重定向到htaccess的全球404腳本中放置這樣的事情:

ErrorDocument 404 path/Error404.php 

在Error404.php插入像這樣的代碼:

// Check the address with error  
if ($_SERVER['REQUEST_URI'] == '/admin/core/file.php') { 

// Set the target error script accordingly 
$TargetURL = "http://site.com/adminhide/core/file.php"; 
} 

// Another option 
if ($_SERVER['REQUEST_URI'] == '/whatever/file.php') { 
$TargetURL = "http://site.com/whatever/file.php"; 
} 
... // More options 

// Go to appropriate file 
echo '<script type="text/javascript">window.location ="' . $TargetURL . '";</script>'; 
+0

嘿。不,我希望它是動態的。所以,如果不是/admin/core/file.php是/admin/core/ola.php,它將內部重定向到/adminhide/core/ola.php。與文件index.php相同。我不想不重定向只有index.php文件,但是/ admin /目錄中的所有現有文件。謝謝 –

+0

@William更新了我的答案。希望是有用的。 –

+0

您好,我希望它在內部重定向,因此當您輸入site.com/admin/core/file.php時,因爲它不存在,它會向您顯示site.com/adminhide/core/file.php,但地址欄會保留。謝謝。 –

相關問題