2012-08-28 151 views
1

我的CakePHP 2網站有以下.htaccess文件。
我把它放在webroot文件夾下。CakePHP站點使用.htaccess限制對某些文件的訪問

每天一些機器人嘗試登錄到我的網站作爲WordPress的網站。所以我需要限制一些文件名(wp-login.php)或者一些目錄如Administrator或者cache。

  • 但是,當我進入到example.com/wp-login.php我得到「錯誤:發生內部錯誤。」 CakePHP異常的頁面。
  • 當我取消註釋「目錄/管理員」或「目錄/緩存」每個頁面給出403錯誤。

我該如何限制到那些文件和文件夾?

<FilesMatch "\.(htaccess|htpasswd|ini|phps|fla|psd|log|sh)$"> 
Order allow,Deny 
Deny from all 
</FilesMatch> 

<Files wp-login.php> 
    Order allow,deny 
    Deny from all 
</Files> 

#<Directory /Administrator> 
# Order allow,deny 
# Deny from all 
#<Directory> 

#<Directory /Cache> 
# Order allow,deny 
# Deny from all 
#<Directory> 


<IfModule mod_rewrite.c> 
    RewriteEngine On 

    RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] 
    RewriteRule ^(.*)$ http://%1/$1 [R=301,L] 

    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^(.*)$ index.php [QSA,L] 
</IfModule> 

#set file cache maximum age in seconds 
<ifmodule mod_headers.c> 
    <filesmatch "\.(ico|flv|jpg|jpeg|png|gif|css|swf)$"> 
     Header set Cache-Control "max-age=518400, public" 
    </filesmatch> 
    <filesmatch "\.(js|css)$"> 
     Header set Cache-Control "max-age=604800, public" 
    </filesmatch> 
</ifmodule> 


# gzip files 
<ifModule mod_gzip.c> 
    mod_gzip_on Yes 
    mod_gzip_dechunk Yes 
    mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$ 
    mod_gzip_item_include handler ^cgi-script$ 
    mod_gzip_item_include mime ^text/.* 
    mod_gzip_item_include mime ^application/x-javascript.* 
    mod_gzip_item_include mime ^application/javascript.* 
    mod_gzip_item_exclude mime ^image/.* 
    mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.* 
</ifModule> 

# gzip files 
<ifModule mod_deflate.c> 
    <filesMatch "\.(css|js|x?html?|php)$"> 
    SetOutputFilter DEFLATE 
    </filesMatch> 
</ifModule> 

編輯:我改變了重定向代碼。目錄問題解決了,但CakePHP風格的Interval服務器錯誤異常仍然存在。

<FilesMatch "\.(htaccess|htpasswd|ini|phps|fla|psd|log|sh)$"> 
Order allow,Deny 
Deny from all 
</FilesMatch> 

<Files "wp-login.php"> 
    Order allow,deny 
    Deny from all 
</Files> 

<IfModule mod_rewrite.c> 
    RewriteEngine On 

    RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] 
    RewriteRule ^(.*)$ http://%1/$1 [R=301,L] 

    RewriteRule ^/?(administrator|cache|undefined) - [L,F,NC] 

    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^(.*)$ index.php [QSA,L] 
</IfModule> 

回答

3

您不能在htaccess文件中使用<Directory>塊。我不知道爲什麼你得到一個500錯誤的WP-login.php中,但你需要一些報價添加至宣言:

<Files "wp-login.php"> 
    Order allow,deny 
    Deny from all 
</Files> 

您可以將單獨的htaccess中的AdministratorCache目錄是隻是:

Order allow,deny 
Deny from all 

或者你可以使用像一個重寫規則:

RewriteRule ^/?(Administrator|Cache) - [L,F] 
+0

編輯的問題。目錄問題通過您的評論解決。雖然我把文件名放在引號內,但wp-login錯誤仍然存​​在。 – trante

+1

@trante仍然沒有看到任何錯誤。那麼,不管是什麼情況,你總是可以將wp-login.php添加到列表中:'RewriteRule^/?(administrator | cache | undefined | wp-login \ .php) - [L,F,NC]' –

+0

Your上次評論解決了我的問題。所以我接受:)) – trante

相關問題