阻止加载页面

时间:2013-02-15 11:33:26

标签: php .htaccess

我正在为我创建的网页开发自己的MVC样式系统。文件结构如下:

docs/contact/contact.php
img/
inc/
index.php
.htaccess

内部文档中有网站每个部分的文件夹。在这种情况下,我扩大了“联系”。 .htaccess文件将所有URI路由到index.php,但如果直接访问它们则不会,即domain.com/docs/contact/contact.php。

这是我的.htaccess:

Options +FollowSymlinks
RewriteEngine on
RewriteOptions MaxRedirects=10

AddType "text/html; charset=UTF-8" html 
AddType "text/plain; charset=UTF-8" txt

<IfModule mod_rewrite.c>

RewriteEngine On
RewriteBase /

# if file not exists
RewriteCond %{REQUEST_FILENAME} !-f

# if dir not exists
RewriteCond %{REQUEST_FILENAME} !-d

# avoid 404s of missing assets in our script
RewriteCond %{REQUEST_URI} !^.*\.(jpe?g|png|gif|css|js)$ [NC]

RewriteRule .* index.php [QSA,L]

</IfModule>

有没有办法阻止人们访问docs文件夹中的文件,除非直接从文件index.php调用?可以用.htaccess吗?

1 个答案:

答案 0 :(得分:0)

您可以在index.php中定义一些内容以防止这种情况:

define('MyAppLoaded', true);

在您的其他文件中,请查看:

if (!defined('MyAppLoaded')) {
    // show message or handle direct access
}

但真正的问题是:如果您不希望首先直接访问它们,为什么要将所有这些文件放在docroot中?

Imho docroot中唯一的php文件应该是一个index.php文件,其中包含以下内容:

<?php

require __DIR__ . '/../bootstrap.php';