我想将一个文件夹的所有无文件和无目录重定向到另一个文件夹。 .htaccess应该在root(http://example.com)。
示例:
http://example.com/admin/core/file.php - Does not exists. So, redirect (internally) to http://example.com/adminhide/core/file.php
http://example.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 :(得分: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错误,重定向到全局404脚本,在htaccess中放置如下内容:
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>';