我的文档根目录是/ var / www,我没有启用虚拟主机。 这是我的文件夹结构/ var / www:
index.php
classes (external)
controllers
models
files (img, js, css)
views (pages, components)
如您所见,我正在使用模型视图控制器模式。我现在需要的是我必须在我的httpd.conf中使用的正确配置,以定义只有文件夹可以被接收而没有其他文件夹,以防止“未找到”消息或直接php访问。我该怎么设置呢?
这是我目前的httpd.conf
ServerSignature Off
ServerTokens Full
# Settings for server @ port 80.
<VirtualHost *:80>
ServerName <url>
DocumentRoot /var/www
DirectoryIndex index.php
# No one has access to the main directory.
<Directory />
Order Deny,Allow
Deny from all
Options None
AllowOverride None
</Directory>
# Configure the main directory
<Directory /var/www>
# Everyone has access to the main directory.
Order Allow,Deny
Allow from all
Options FollowSymLinks
AllowOverride None
# Enable clean urls.
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</Directory>
</VirtualHost>
感谢您的帮助:)
答案 0 :(得分:1)
如果可能的话,最好将控制器,查看脚本和其他与应用程序相关的代码保留在/var/www
之外,而不是将其放在/var/application
或类似内容中。
然后,您不需要任何重写规则来拒绝访问除文件之外的所有内容。如果您想要添加对新文件夹的访问权限(例如/var/www/css
),那么您可能需要做一些事情才能使其可访问。或者你有相反的情况,你明确拒绝你不想访问的文件夹。这样做但是如果.htaccess被破坏或有人忘记将规则转移到新服务器那么你还有更多工作要做。
在index.php
中,定义一些常量来说明文件的存在位置(例如define('APPLICATION_PATH', '/var/application');