.htaccess重定向 - 如何和哪个目录?

时间:2011-08-16 09:50:25

标签: .htaccess mod-rewrite

我的目录结构“喜欢”这个

    • Sub Dir A.
    • 内容
    • 管理

我在Admin中有一些文件需要.htaccess禁止。我知道他们应该在根本之外但在这种情况下我不能。 htaccess将直接请求重定向到'Sub Dir A / Admin / abc.php'(比如一个禁止的文件)回到说Sub Dir A / Admin / index.php的正确语法 - 只是一个例子。要注意“abc.php”可能是一个包含,因此它应该只是一个直接请求。哦忘了问,将.htaccess文件放在哪个目录

1 个答案:

答案 0 :(得分:1)

如果您真的想要使用mod_rewrite执行此操作,那么规则可以是:

Options +FollowSymLinks -MultiViews
RewriteEngine On

RewriteRule ^abc\.php$ http://www.example.com/subdir_a/admin/index.php [R=301,L]

如果您尝试直接访问abc.php,则会发出301永久重定向。

这将放在/subdir_a/admin/文件夹中的.htaccess中。

如果您愿意 - 可以将它放在网站根文件夹中的.htaccess文件中 - 然后稍微更改重写规则以包含abc.php的路径:

RewriteRule ^subdir_a/admin/abc\.php$ http://www.example.com/subdir_a/admin/index.php [R=301,L]

或者,您可以发出403拒绝访问响应:

Options +FollowSymLinks -MultiViews
RewriteEngine On

RewriteRule ^abc\.php$ - [F,L]

通常的做法是不继续使用.htaccess和mod_rewrite(在某些共享主机方案中可用,或出于性能原因而禁用)并使用PHP脚本端检查:

1。要放在包含/受保护的文件中(例如abc.php):

if (!defined('ENTRY_POINT_MARK')) {
    header('HTTP/1.1 403 Access Denied', true, 403);
    exit();
}

2。要放入调用/主脚本(可以直接访问):

define('ENTRY_POINT_MARK', 'EntryPointMark');