2012-03-08 89 views
0

我的文檔根目錄是/ var/www,我沒有啓用虛擬主機。 這是我的/ var/WWW的文件夾結構:apache2 httpd配置

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> 

感謝您的幫助:)

回答

1

如果可能的話,這將是理想的,以保持你的控制器,查看腳本和其他應用程序相關的代碼出/var/www和而是把它放在/var/application或類似的東西。

然後,您不需要任何重寫規則來拒絕訪問除文件以外的所有內容。如果您想添加對新文件夾的訪問權限(例如/var/www/css),那麼您可能需要採取措施使其可訪問。或者你有相反的情況,你明確地拒絕你不想訪問的文件夾。這是有效的,但如果.htaccess被破壞或有人忘記了規則移動到新的服務器,那麼你有更多的工作要做。

index.php,定義一些常量,告訴文件住的地方(如define('APPLICATION_PATH', '/var/application');

+0

OMG ofcourse,這就是爲什麼他們創建應用程序庫:P非常感謝 – randomKek 2012-03-08 01:32:35

+0

沒問題,是Zend框架或別的東西 – drew010 2012-03-08 01:39:12

+0

!?沒有我自己的,不喜歡大的框架,但是,嗯,現在我在/ var/application目錄中完全否認了,但我不希望用戶獲得「沒有權限」頁面,而只是重定向到索引。/var/www的php是可能的嗎? – randomKek 2012-03-08 01:42:28