0

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

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

在 Docs 中,网站的每个部分都有文件夹。在这种情况下,我扩展了“联系”。.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 来完成吗?

4

1 回答 1

0

您可以在 index.php 中定义一些东西来防止这种情况:

define('MyAppLoaded', true);

并在您的其他文件中检查:

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

但真正的问题是:如果您不希望一开始就可以直接访问这些文件,为什么要将所有这些文件放在您的 docroot 中?

恕我直言,docroot 中唯一的 php 文件应该是 index.php 文件,其内容如下:

<?php

require __DIR__ . '/../bootstrap.php';
于 2013-02-15T11:37:23.853 回答