1

CakePHP2Webサイト用に次の.htaccessファイルがあります。
これをwebrootフォルダーの下に置きます。

毎日、一部のボットはワードプレスサイトとして私のサイトにログインしようとします。したがって、いくつかのファイル名(wp-login.php)またはAdministratorやCacheなどのいくつかのディレクトリを制限する必要があります。

  • しかし、example.com / wp-login.phpにアクセスすると、「エラー:内部エラーが発生しました」というメッセージが表示されます。CakePHP例外のページ。
  • 「directory/administrator」または「directory/cache」のコメントを解除すると、すべてのページで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スタイルのインターバルサーバーエラー例外がまだ存在します。

<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>
4

1 に答える 1

3

<Directory>htaccessファイル内のブロックは使用できません。wp-login.phpで500エラーが発生する理由はわかりませんが、宣言に引用符を追加する必要があります。

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

個々のhtaccessファイルは、次のディレクトリに配置できAdministratorますCache

Order allow,deny
Deny from all

または、書き換えルールのようなものを使用できます。

RewriteRule ^/?(Administrator|Cache) - [L,F]
于 2012-08-28T20:31:13.877 に答える