我正在为我创建的网页开发自己的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吗?
答案 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';